AWS WAF 모바일 SDK의 코드 예제 - AWS WAF, AWS Firewall ManagerAWS Shield Advanced및 AWS Shield 네트워크 보안 디렉터

에 대한 새로운 콘솔 환경 소개 AWS WAF

이제 업데이트된 환경을 사용하여 콘솔의 모든 위치에서 AWS WAF 기능에 액세스할 수 있습니다. 자세한 내용은 업데이트된 콘솔 환경 작업 섹션을 참조하십시오.

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS WAF 모바일 SDK의 코드 예제

이 섹션에서는 모바일 SDK를 사용한 코드 예제를 제공합니다.

토큰 공급자 초기화 및 토큰 가져오기

구성 객체를 사용하여 토큰 공급자 인스턴스를 시작합니다. 그러고 나면 사용 가능한 작업을 사용하여 토큰을 검색할 수 있습니다. 다음은 필요한 코드의 기본 구성 요소입니다.

iOS
let url: URL = URL(string: "protection pack (web ACL) integration URL")! let configuration = WAFConfiguration(applicationIntegrationUrl: url, domainName: "Domain name") let tokenProvider = WAFTokenProvider(configuration) //onTokenReady can be add as an observer for UIApplication.willEnterForegroundNotification self.tokenProvider.onTokenReady() { token, error in if let token = token { //token available } if let error = error { //error occurred after exhausting all retries } } //getToken() let token = tokenProvider.getToken()
Android

Java 예제:

String applicationIntegrationURL = "protection pack (web ACL) integration URL"; //Or URL applicationIntegrationURL = new URL("protection pack (web ACL) integration URL"); String domainName = "Domain name"; WAFConfiguration configuration = WAFConfiguration.builder().applicationIntegrationURL(applicationIntegrationURL).domainName(domainName).build(); WAFTokenProvider tokenProvider = new WAFTokenProvider(Application context, configuration); // implement a token result callback WAFTokenResultCallback callback = (wafToken, error) -> { if (wafToken != null) { // token available } else { // error occurred in token refresh } }; // Add this callback to application creation or activity creation where token will be used tokenProvider.onTokenReady(callback); // Once you have token in token result callback // if background refresh is enabled you can call getToken() from same tokenprovider object // if background refresh is disabled you can directly call getToken()(blocking call) for new token WAFToken token = tokenProvider.getToken();

Kotlin 예제:

import com.amazonaws.waf.mobilesdk.token.WAFConfiguration import com.amazonaws.waf.mobilesdk.token.WAFTokenProvider private lateinit var wafConfiguration: WAFConfiguration private lateinit var wafTokenProvider: WAFTokenProvider private val WAF_INTEGRATION_URL = "protection pack (web ACL) integration URL" private val WAF_DOMAIN_NAME = "Domain name" fun initWaf() { // Initialize the tokenprovider instance val applicationIntegrationURL = URL(WAF_INTEGRATION_URL) wafConfiguration = WAFConfiguration.builder().applicationIntegrationURL(applicationIntegrationURL) .domainName(WAF_DOMAIN_NAME).backgroundRefreshEnabled(true).build() wafTokenProvider = WAFTokenProvider(getApplication(), wafConfiguration) // getToken from tokenprovider object println("WAF: "+ wafTokenProvider.token.value) // implement callback for where token will be used wafTokenProvider.onTokenReady { wafToken, sdkError -> run { println("WAF Token:" + wafToken.value) } } }

setTokenCookieTRUE이면 토큰 공급자는 tokenCookiePath에 지정된 경로 아래의 모든 위치에 대한 웹 요청에 토큰 쿠키를 포함합니다. 기본적으로 setTokenCookieTRUE이고 tokenCookiePath/입니다.

토큰 쿠키 경로를 지정하여 토큰 쿠키가 포함된 요청의 범위를 좁힐 수 있습니다(예: /web/login). 이렇게 하면 AWS WAF 규칙이 다른 경로로 보내는 요청의 토큰을 검사하지 않는지 확인합니다. AWSManagedRulesACFPRuleSet 규칙 그룹을 사용할 때 계정 등록 및 생성 경로를 구성하면 규칙 그룹이 해당 경로로 전송되는 요청의 토큰을 확인합니다. 자세한 내용은 ACFP 관리형 규칙 그룹을 웹 ACL에 추가 단원을 참조하십시오. 마찬가지로 AWSManagedRulesATPRuleSet 규칙 그룹을 사용할 때 로그인 경로를 구성하면 규칙 그룹이 해당 경로로 전송되는 요청의 토큰을 확인합니다. 자세한 내용은 보호 팩에 ATP 관리형 규칙 그룹 추가(웹 ACL) 단원을 참조하십시오.

iOS

setTokenCookie인 경우 TRUE토큰 공급자는 AWS WAF 토큰을에 저장HTTPCookieStorage.shared하고에서 지정한 도메인에 대한 요청에 쿠키를 자동으로 포함합니다WAFConfiguration.

let request = URLRequest(url: URL(string: domainEndpointUrl)!) //The token cookie is set automatically as cookie header let task = URLSession.shared.dataTask(with: request) { data, urlResponse, error in }.resume()
Android

setTokenCookie가 인 경우 TRUE토큰 공급자는 공유 애플리케이션 전체의 CookieHandler 인스턴스에 AWS WAF 토큰을 저장합니다. 토큰 공급자는 WAFConfiguration에 지정한 도메인에 대한 요청에 쿠키를 자동으로 포함합니다.

Java 예제:

URL url = new URL("Domain name"); //The token cookie is set automatically as cookie header HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); connection.getResponseCode();

Kotlin 예제:

val url = URL("Domain name") //The token cookie is set automatically as cookie header val connection = (url.openConnection() as HttpsURLConnection) connection.responseCode

CookieHandler 기본 인스턴스를 이미 초기화한 경우 토큰 공급자는 이를 사용하여 쿠키를 관리합니다. 그렇지 않은 경우 토큰 공급자는 AWS WAF 토큰으로 새 CookieManager 인스턴스를 초기화CookiePolicy.ACCEPT_ORIGINAL_SERVER한 다음이 새 인스턴스를의 기본 인스턴스로 설정합니다CookieHandler.

다음 코드는 앱에서 쿠키 관리자 및 쿠키 핸들러를 사용할 수 없을 때 SDK가 쿠키 관리자와 쿠키 핸들러를 초기화하는 방법을 보여줍니다.

Java 예제:

CookieManager cookieManager = (CookieManager) CookieHandler.getDefault(); if (cookieManager == null) { // Cookie manager is initialized with CookiePolicy.ACCEPT_ORIGINAL_SERVER cookieManager = new CookieManager(); CookieHandler.setDefault(cookieManager); }

Kotlin 예제:

var cookieManager = CookieHandler.getDefault() as? CookieManager if (cookieManager == null) { // Cookie manager is initialized with CookiePolicy.ACCEPT_ORIGINAL_SERVER cookieManager = CookieManager() CookieHandler.setDefault(cookieManager) }

setTokenCookieFALSE로 설정하면 보호된 엔드포인트에 대한 요청에 토큰 쿠키를 수동으로 쿠키 HTTP 요청 헤더로서 제공해야 합니다. 다음 코드에서는 이를 수행하는 방법을 보여줍니다.

iOS
var request = URLRequest(url: wafProtectedEndpoint) request.setValue("aws-waf-token=token from token provider", forHTTPHeaderField: "Cookie") request.httpShouldHandleCookies = true URLSession.shared.dataTask(with: request) { data, response, error in }
Android

Java 예제:

URL url = new URL("Domain name"); HttpsURLConnection connection = (HttpsURLConnection) url.openConnection(); String wafTokenCookie = "aws-waf-token=token from token provider"; connection.setRequestProperty("Cookie", wafTokenCookie); connection.getInputStream();

Kotlin 예제:

val url = URL("Domain name") val connection = (url.openConnection() as HttpsURLConnection) val wafTokenCookie = "aws-waf-token=token from token provider" connection.setRequestProperty("Cookie", wafTokenCookie) connection.inputStream