Fonctionnement du SDK AWS WAF mobile - 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.

Fonctionnement du SDK AWS WAF mobile

Les SDK mobiles vous fournissent un fournisseur de jetons configurable que vous pouvez utiliser pour récupérer et utiliser des jetons. Le fournisseur de jetons vérifie que les demandes que vous autorisez proviennent de clients légitimes. Lorsque vous envoyez des demandes aux AWS ressources que vous protégez AWS WAF, vous incluez le jeton dans un cookie afin de valider la demande. Vous pouvez gérer le cookie de jeton manuellement ou demander au fournisseur de jetons de le faire pour vous.

Cette section couvre les interactions entre les classes, les propriétés et les méthodes incluses dans le SDK mobile. Pour les spécifications du SDK, voirSpécification du SDK AWS WAF mobile.

Récupération et mise en cache des jetons

Lorsque vous créez l'instance du fournisseur de jetons dans votre application mobile, vous configurez la manière dont vous souhaitez qu'elle gère les jetons et leur récupération. Votre principal choix est de savoir comment conserver des jetons valides et non expirés à utiliser dans les requêtes Web de votre application :

  • Actualisation de l'arrière-plan activée : il s'agit de la valeur par défaut. Le fournisseur de jetons actualise automatiquement le jeton en arrière-plan et le met en cache. Lorsque l'actualisation en arrière-plan est activée, lorsque vous appelezgetToken(), l'opération récupère le jeton mis en cache.

    Le fournisseur de jetons effectue l'actualisation du jeton à des intervalles configurables, de sorte qu'un jeton non expiré soit toujours disponible dans le cache lorsque l'application est active. L'actualisation en arrière-plan est suspendue lorsque votre application est inactive. Pour plus d'informations à ce sujet, consultezRécupération d'un jeton suite à l'inactivité d'une application.

  • Actualisation en arrière-plan désactivée : vous pouvez désactiver l'actualisation des jetons en arrière-plan, puis récupérer les jetons uniquement sur demande. Les jetons récupérés à la demande ne sont pas mis en cache et vous pouvez en récupérer plusieurs si vous le souhaitez. Chaque jeton est indépendant des autres que vous récupérez, et chacun possède son propre horodatage utilisé pour calculer l'expiration.

    Les options suivantes s'offrent à vous pour récupérer les jetons lorsque l'actualisation en arrière-plan est désactivée :

    • getToken()— Lorsque vous appelez getToken() avec l'actualisation en arrière-plan désactivée, l'appel récupère de manière synchrone un nouveau jeton depuis. AWS WAF Il s'agit d'un appel potentiellement bloquant qui peut affecter la réactivité de l'application si vous l'invoquez sur le thread principal.

    • onTokenReady(WAFTokenResultCallback)— Cet appel récupère un nouveau jeton de manière asynchrone, puis invoque le rappel du résultat fourni dans un thread d'arrière-plan lorsqu'un jeton est prêt.

Comment le fournisseur de jetons tente à nouveau de récupérer un jeton qui a échoué

Le fournisseur de jetons réessaie automatiquement de récupérer le jeton en cas d'échec de la récupération. Les nouvelles tentatives sont initialement effectuées à l'aide d'une temporisation exponentielle avec un temps d'attente de départ de 100 ms. Pour plus d'informations sur les tentatives exponentielles, reportez-vous à la section Rétentatives d'erreur et recul exponentiel dans. AWS

Lorsque le nombre de tentatives atteint le nombre configurémaxRetryCount, le fournisseur de jetons arrête d'essayer ou passe à essayer toutes les maxErrorTokenRefreshDelayMsec millisecondes, selon le type de récupération du jeton :

  • onTokenReady()— Le fournisseur de jetons passe à l'attente de quelques maxErrorTokenRefreshDelayMsec millisecondes entre les tentatives et continue d'essayer de récupérer le jeton.

  • Actualisation en arrière-plan : le fournisseur de jetons passe à l'attente de quelques maxErrorTokenRefreshDelayMsec millisecondes entre les tentatives et continue d'essayer de récupérer le jeton.

  • getToken()Appels à la demande, lorsque l'actualisation en arrière-plan est désactivée : le fournisseur de jetons arrête d'essayer de récupérer un jeton et renvoie la valeur du jeton précédent, ou une valeur nulle s'il n'existe aucun jeton précédent.

Récupération d'un jeton suite à l'inactivité d'une application

L'actualisation en arrière-plan n'est effectuée que lorsque votre application est considérée comme active pour votre type d'application :

  • iOS — L'actualisation de l'arrière-plan est effectuée lorsque l'application est au premier plan.

  • Android — L'actualisation de l'arrière-plan est effectuée lorsque l'application n'est pas fermée, qu'elle soit au premier plan ou en arrière-plan.

Si votre application reste dans un état qui ne prend pas en charge l'actualisation en arrière-plan pendant plus de tokenRefreshDelaySec quelques secondes que vous avez configurées, le fournisseur de jetons interrompt l'actualisation en arrière-plan. Par exemple, pour une application iOS, si la valeur tokenRefreshDelaySec est 300 et que l'application se ferme ou passe en arrière-plan pendant plus de 300 secondes, le fournisseur de jetons arrête d'actualiser le jeton. Lorsque l'application revient à un état actif, le fournisseur de jetons redémarre automatiquement l'actualisation en arrière-plan.

Lorsque votre application revient à un état actif, appelez onTokenReady() pour être averti lorsque le fournisseur de jetons a récupéré et mis en cache un nouveau jeton. Ne vous contentez pas d'appelergetToken(), car le cache ne contient peut-être pas encore de jeton valide et actuel.