

**Présentation d'une nouvelle expérience de console pour AWS WAF**

Vous pouvez désormais utiliser l'expérience mise à jour pour accéder aux AWS WAF fonctionnalités n'importe où dans la console. Pour plus de détails, consultez la section [Utilisation de la console](https://docs.aws.amazon.com/waf/latest/developerguide/working-with-console.html). 

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 le SDK AWS WAF mobile
<a name="waf-mobile-sdk-coding-examples"></a>

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

## Initialisation du fournisseur de jetons et obtention de jetons
<a name="waf-mobile-sdk-coding-basic"></a>

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: "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 ]

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

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 = "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)
		}
	}
}
```

------

## Autoriser le SDK à fournir le cookie jeton dans vos requêtes HTTP
<a name="waf-mobile-sdk-coding-auto-token-cookie"></a>

Si `setTokenCookie` tel est le cas`TRUE`, 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é dans`tokenCookiePath`. 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 vos AWS WAF règles ne détectent 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 géré par l'ACFP à votre ACL Web](waf-acfp-rg-using.md). 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 géré par ATP à votre pack de protection (ACL Web)](waf-atp-rg-using.md). 

------
#### [ iOS ]

Dans `setTokenCookie` ce cas`TRUE`, 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 cas`TRUE`, 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 le AWS WAF jeton, `CookiePolicy.ACCEPT_ORIGINAL_SERVER` puis définira cette nouvelle instance comme instance par défaut dans`CookieHandler`.

Le code suivant montre comment le SDK initialise 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)
}
```

------

## Fournir manuellement le cookie jeton dans vos requêtes HTTP
<a name="waf-mobile-sdk-coding-manual-token-cookie"></a>

Si vous définissez cette `setTokenCookie` option`FALSE`, vous devez fournir le cookie jeton manuellement, sous forme d'en-tête de requête HTTP 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
```

------