AWS WAF モバイル SDK の仕組み - AWS WAF、 AWS Firewall Manager、および AWS Shield Advanced

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS WAF モバイル SDK の仕組み

モバイル SDK は、トークンの取得と利用のために使用できる設定可能なトークンプロバイダーを提供します。トークンプロバイダーは、許可するリクエストが正規の顧客からのものであることを検証します。 AWS 保護対象のリソースにリクエストを送信するときは AWS WAF、そのトークンを Cookie に含めてリクエストを検証します。トークン cookie は手動で処理することも、トークンプロバイダーに処理させることもできます。

このセクションでは、モバイル SDK に含まれるクラス、プロパティ、およびメソッド間のインタラクションについて説明します。SDK の仕様については、「AWS WAF モバイル SDK 仕様」を参照してください。

トークンの取得とキャッシュ

モバイルアプリケーションでトークンプロバイダーインスタンスを作成するときに、トークンとトークンの取得を管理する方法を設定します。主に、アプリケーションのウェブリクエストで使用するための、有効で期限切れになっていないトークンを維持する方法を選択できます。

  • [Background refresh enabled] (バックグラウンド更新が有効) - これがデフォルトのトランスコードプリセットです。トークンプロバイダーは、バックグラウンドでトークンを自動的に更新し、キャッシュします。バックグラウンド更新が有効になっている場合、getToken() を呼び出すと、オペレーションはキャッシュされたトークンを取得します。

    トークンプロバイダーは、設定可能な間隔でトークンの更新を実行します。これにより、アプリケーションがアクティブな間、期限切れでないトークンは常にキャッシュ内で利用可能な状態となります。アプリケーションが非アクティブ状態の間、バックグラウンドの更新が一時停止されます。詳細については、「アプリケーションが非アクティブ状態になった後のトークンの取得」を参照してください。

  • [Background refresh disabled] (バックグラウンド更新が無効) - バックグラウンドトークンの更新を無効にして、オンデマンドでのみトークンを取得できます。オンデマンドで取得されたトークンはキャッシュされません。また、必要に応じて複数のトークンを取得できます。各トークンは、取得する他のトークンとは独立しており、有効期限を計算するために使用される独自のタイムスタンプを備えています。

    バックグラウンド更新が無効になっている場合のトークンの取得には、次の選択肢があります。

    • getToken()getToken() バックグラウンド更新を無効にして呼び出しを行うと、呼び出しはから新しいトークンを同期的に取得します。 AWS WAFこれは、メインスレッドで呼び出すと、アプリケーションの応答性に影響する可能性のあるブロッキング呼び出しである場合があります。

    • onTokenReady(WAFTokenResultCallback) - この呼び出しは、新しいトークンを非同期的に取得し、トークンの準備ができたときに提供された結果コールバックをバックグラウンドスレッドで呼び出します。

トークンプロバイダーが失敗したトークンの取得を再試行する方法

トークンプロバイダーは、取得に失敗したときにトークンの取得を自動的に再試行します。再試行は、開始の再試行の待ち時間が 100 ミリ秒のエクスポネンシャルバックオフを使用して最初に実行されます。エクスポネンシャル再試行の詳細については、「AWSでのエラー再試行とエクスポネンシャルバックオフ」を参照してください。

再試行回数が設定された maxRetryCount に達すると、トークンプロバイダーは、トークン取得のタイプに応じて、試行を停止するか、maxErrorTokenRefreshDelayMsec ミリ秒ごとの試行に切り替えます。

  • onTokenReady() – トークンプロバイダーは、試行間の待機時間を maxErrorTokenRefreshDelayMsec ミリ秒に切り替えて、トークン取得の試行を続行します。

  • バックグラウンド更新 – トークンプロバイダーは、試行間の待機時間を maxErrorTokenRefreshDelayMsec ミリ秒に切り替えて、トークンの取得の試行を続行します。

  • バックグラウンド更新が無効になっている場合のオンデマンド getToken() 呼び出し – トークンプロバイダーはトークンの取得の試行を停止し、前のトークン値を返します。前のトークンがない場合は null 値を返します。

アプリケーションが非アクティブ状態になった後のトークンの取得

バックグラウンド更新は、アプリケーションがアプリケーションタイプについてアクティブであるとみなされる場合にのみ実行されます。

  • iOS – バックグラウンド更新は、アプリケーションがフォアグラウンドにあるときに実行されます。

  • Android - バックグラウンドの更新は、アプリケーションがフォアグラウンドまたはバックグラウンドのいずれにあるかにかかわらず、アプリケーションが閉じられていないときに実行されます。

アプリケーションが設定された tokenRefreshDelaySec 秒より長くバックグラウンド更新をサポートしない状態のままである場合、トークンプロバイダーはバックグラウンド更新を一時停止します。例えば、iOS アプリケーションの場合、tokenRefreshDelaySec が 300 で、300 秒以を超える時間にわたって、アプリケーションが閉じられていたり、バックグラウンド状態になっていたりすると、トークンプロバイダーはトークンの更新を停止します。アプリケーションがアクティブな状態に戻ると、トークンプロバイダーは自動的にバックグラウンド更新を再開します。

アプリケーションがアクティブ状態に戻ったら、トークンプロバイダーが新しいトークンを取得してキャッシュしたときに通知を受け取ることができるように onTokenReady() を呼び出します。キャッシュには最新の有効なトークンがまだ含まれていない可能性があるため、単に getToken() を呼び出さないでください。