Amazon WAF移动 SDK 的工作原理 - Amazon WAF、Amazon Firewall Manager 和 Amazon Shield Advanced
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon WAF移动 SDK 的工作原理

移动软件开发工具包为您提供了一个可配置的令牌提供商,您可以使用它来检索和使用令牌。令牌提供商会验证您允许的请求是否来自合法客户。当您向所保护的Amazon资源发送请求时Amazon WAF,您可以将令牌包含在 Cookie 中以验证请求。您可以手动处理令牌 cookie,也可以让令牌提供商为您处理。

本节介绍移动 SDK 中包含的类、属性和方法之间的交互。有关 SDK 规范,请参阅移Amazon WAF动 SDK 规范

代币检索和缓存

在移动应用程序中创建令牌提供者实例时,您可以配置其管理令牌和令牌检索的方式。您的主要选择是如何维护有效的、未过期的令牌以用于应用程序的网络请求:

  • 启用后台刷新-这是默认设置。令牌提供者自动在后台刷新令牌并将其缓存。启用后台刷新后,当您调用时getToken(),该操作将检索缓存的令牌。

    令牌提供者以可配置的时间间隔执行令牌刷新,因此在应用程序处于活动状态时,未过期的令牌始终在缓存中可用。当您的应用程序处于非活动状态时,后台刷新会暂停。有关这方面的信息,请参见在应用程序不活动后检索令牌

  • 禁用后台刷新-您可以禁用后台令牌刷新,然后仅按需检索令牌。按需检索的令牌不会被缓存,如果需要,您可以检索多个令牌。每个代币都独立于您检索的任何其他代币,并且每个代币都有自己的时间戳,用于计算到期时间。

    禁用后台刷新时,您可以选择以下令牌检索:

    • getToken()— 当您在禁getToken()用后台刷新的情况下进行呼叫时,该呼叫会同步从中检索新令牌Amazon WAF。这是一个潜在的阻塞调用,如果你在主线程上调用,可能会影响应用程序的响应能力。

    • onTokenReady(WAFTokenResultCallback)— 此调用异步检索新令牌,然后在令牌准备就绪时在后台线程中调用提供的结果回调。

代币提供者如何重试失败的代币检索

检索失败时,令牌提供者会自动重试令牌检索。重试最初使用指数退避执行,起始重试等待时间为 100 ms。有关指数重试的信息,请参阅中的错误重试和指数回退Amazon

当重试次数达到配置的次数时maxRetryCount,令牌提供者要么停止尝试,要么切换到每maxErrorTokenRefreshDelayMsec毫秒重试一次,具体取决于令牌检索的类型:

  • onTokenReady()— 令牌提供者在两次尝试之间切换到等待maxErrorTokenRefreshDelayMsec毫秒的状态,并继续尝试检索令牌。

  • 后台刷新 — 令牌提供者在两次尝试之间切换到等待maxErrorTokenRefreshDelayMsec毫秒的状态,并继续尝试检索令牌。

  • 禁用后台刷新时按需getToken()调用 — 令牌提供者停止尝试检索令牌并返回先前的令牌值,如果没有先前的令牌,则返回空值。

在应用程序不活动后检索令牌

仅当您的应用程序因您的应用程序类型处于活动状态时才会执行后台刷新:

  • iOS-当应用程序处于前台时执行后台刷新。

  • Android — 无论是在前台还是在后台,应用程序未关闭时都会执行后台刷新。

如果您的应用程序处于任何不支持后台刷新的状态的时间超过您配置的tokenRefreshDelaySec秒数,则令牌提供者会暂停后台刷新。例如,对于 iOS 应用程序,如果tokenRefreshDelaySec为 300 且该应用程序关闭或进入后台超过 300 秒,则令牌提供者会停止刷新令牌。当应用程序返回到活动状态时,令牌提供者会自动重新启动后台刷新。

当您的应用程序恢复到活动状态时,请致电,onTokenReady()以便在令牌提供者检索并缓存新令牌时通知您。不要随便调用getToken(),因为缓存可能还不包含当前有效的令牌。