AWS WAF 모바일 SDK용 코드 작성 - AWS WAF, AWS Firewall Manager, 및 AWS Shield Advanced

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

AWS WAF 모바일 SDK용 코드 작성

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

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

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

iOS
let url: URL = URL(string: "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

자바 예제:

String applicationIntegrationURL = "Web ACL integration URL"; //Or URL applicationIntegrationURL = new URL("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 = "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

setTokenCookieTRUE인 경우 토큰 제공자는 AWS WAF 토큰을 HTTPCookieStorage.shared a에 저장하고 사용자가 지정한 도메인에 대한 요청에 자동으로 쿠키를 포함합니다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

setTokenCookieTRUE인 경우 토큰 제공자는 애플리케이션 전체에서 공유되는 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 기본 인스턴스를 이미 초기화한 경우 토큰 공급자는 이를 사용하여 쿠키를 관리합니다. 그렇지 않은 경우 토큰 제공자는 토큰으로 새 CookieManager 인스턴스를 초기화한 다음 이 새 인스턴스를 에서 CookieHandler 기본 인스턴스로 설정합니다. AWS WAF CookiePolicy.ACCEPT_ORIGINAL_SERVER

다음 코드는 앱에서 쿠키 관리자 및 쿠키 핸들러를 사용할 수 없을 때 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

자바 예제:

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