Exemples de code pour AWS WAF mobile SDK - AWS WAF, AWS Firewall Manager, et AWS Shield Advanced

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Exemples de code pour AWS WAF mobile SDK

Cette section fournit des exemples de code pour l'utilisation du mobileSDK.

Initialisation du fournisseur de jetons et obtention de jetons

Vous lancez votre instance de fournisseur de jetons à l'aide d'un objet de configuration. Vous pouvez ensuite récupérer des jetons en utilisant les opérations disponibles. Les éléments de base du code requis sont présentés ci-dessous.

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

Exemple Java :

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();

Exemple en 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) } } }

Si setTokenCookie tel est le casTRUE, le fournisseur de jetons inclut le cookie jeton pour vous dans vos requêtes Web adressées à tous les emplacements situés sous le chemin spécifié danstokenCookiePath. Par défaut, setTokenCookie est TRUE et tokenCookiePath est/.

Vous pouvez réduire la portée des demandes qui incluent un cookie jeton en spécifiant le chemin du cookie jeton, par exemple,/web/login. Dans ce cas, vérifiez que votre AWS WAF les règles ne vérifient pas la présence de jetons dans les demandes que vous envoyez à d'autres chemins. Lorsque vous utilisez le groupe de AWSManagedRulesACFPRuleSet règles, vous configurez les chemins d'enregistrement et de création du compte, et le groupe de règles vérifie la présence de jetons dans les demandes envoyées à ces chemins. Pour de plus amples informations, veuillez consulter Ajouter le groupe de règles ACFP géré à votre site Web ACL. De même, lorsque vous utilisez le groupe de AWSManagedRulesATPRuleSet règles, vous configurez le chemin de connexion, et le groupe de règles vérifie la présence de jetons dans les demandes envoyées vers ce chemin. Pour de plus amples informations, veuillez consulter Ajouter le groupe de règles ATP géré à votre site Web ACL.

iOS

Dans setTokenCookie ce casTRUE, le fournisseur de jetons stocke le AWS WAF jeton dans un HTTPCookieStorage.shared et inclut automatiquement le cookie dans les demandes adressées au domaine que vous avez spécifié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

Dans setTokenCookie ce casTRUE, le fournisseur de jetons stocke le AWS WAF jeton dans une CookieHandler instance partagée à l'échelle de l'application. Le fournisseur de jetons inclut automatiquement le cookie dans les demandes adressées au domaine que vous avez spécifiéWAFConfiguration.

Exemple Java :

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

Exemple en Kotlin :

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

Si l'instance CookieHandler par défaut est déjà initialisée, le fournisseur de jetons l'utilisera pour gérer les cookies. Dans le cas contraire, le fournisseur de jetons initialisera une nouvelle CookieManager instance avec AWS WAF jeton, CookiePolicy.ACCEPT_ORIGINAL_SERVER puis définissez cette nouvelle instance comme instance par défaut dansCookieHandler.

Le code suivant montre comment SDK initialiser le gestionnaire de cookies et le gestionnaire de cookies lorsqu'ils ne sont pas disponibles dans votre application.

Exemple Java :

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

Exemple en Kotlin :

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

Si vous définissez cette setTokenCookie optionFALSE, vous devez fournir le cookie jeton manuellement, sous forme d'en-tête de HTTP demande de cookie, dans vos demandes adressées à votre point de terminaison protégé. Le code suivant montre comment procéder.

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

Exemple 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();

Exemple en 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