Application Load Balancer を使用して JWTs を検証する - エラスティックロードバランシング

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

Application Load Balancer を使用して JWTs を検証する

安全なservice-to-service (S2S) またはmachine-to-machine Application Load Balancer (ALB) を設定できます。ロードバランサーは、JWT の発行方法や人間による操作の有無にかかわらず、JWT を検証できます。

ALB はトークン署名を検証し、'iss' (発行者) と 'exp' (有効期限) の 2 つの必須クレームが必要です。さらに、トークンに存在する場合、ALB は「nbf」(以前ではない) および「iat」(時に発行) クレームも検証します。検証のために最大 10 件の追加クレームを設定できます。これらのクレームは 3 つの形式をサポートしています。

  • 単一文字列: 単一のテキスト値

  • スペース区切り値: スペースで区切られた複数の値 (最大 10 個の値)

  • 文字列配列: テキスト値の配列 (最大 10 個の値)

トークンが有効な場合、ロードバランサーはトークンを使用してリクエストをターゲットにそのまま転送します。それ以外の場合、リクエストを拒否します。

JWT 検証を使用する準備をする

以下のタスクを実行します。

  1. クライアント ID とクライアントシークレットを発行する IdP にサービスを登録します。

  2. サービスへのアクセスをリクエストするには、IdP を別途呼び出します。IdP はアクセストークンで応答します。このトークンは通常、IdP によって署名された JWT です。

  3. JSON ウェブキーセット (JWKS) エンドポイントを設定します。ロードバランサーは、設定した既知の場所で IdP によって発行されたパブリックキーを取得します。

  4. JWT をリクエストヘッダーに含め、すべてのリクエストで Application Load Balancer に転送します。注: RS256 アルゴリズムのみがサポートされています

コンソールを使用して JWT 検証を設定するには

  1. Amazon EC2 コンソール (https://console.aws.amazon.com/ec2/) を開きます。

  2. ナビゲーションペインの [ロードバランシング] で [ロードバランサー] を選択します。

  3. Application Load Balancer を選択し、リスナータブを選択します。

  4. HTTPS リスナーを選択し、ルールの管理を選択します。

  5. [ルールを追加] を選択してください。

  6. (オプション) ルールの名前を指定するには、名前とタグを展開し、名前を入力します。タグを追加するには、[タグを追加] を選択し、タグキーとタグ値を入力します。

  7. 条件 で、1~5 の条件値を定義します。

  8. (オプション) 変換を追加するには、変換の追加を選択し、変換タイプを選択し、一致する正規表現と置換文字列を入力します。

  9. アクション、事前ルーティングアクションで、トークンの検証を選択します。

    1. JWKS エンドポイントの場合は、JSON ウェブキーセットエンドポイントの URL を入力します。このエンドポイントはパブリックアクセス可能で、JWT 署名の検証に使用されるパブリックキーを返す必要があります。

    2. 発行者には、JWT トークンに iss クレームの想定値を入力します。

    3. (オプション) 追加クレームを検証するには、追加クレームを選択します。

      1. クレーム名に、検証するクレームの名前を入力します。

      2. Format で、クレーム値の解釈方法を選択します。

        1. 単一の文字列: クレームは、指定された 1 つの値と正確に一致する必要があります。

        2. 文字列配列: クレームは配列の値の 1 つと一致する必要があります。

        3. スペース区切り値: クレームには、指定された値を含める必要があるスペース区切り値が含まれています。

      3. Values には、クレームの想定値を入力します。

      4. 追加のクレーム (最大 10 クレーム) についても繰り返します。

  10. アクション、ルーティングアクションで、トークンの検証が成功した後に実行するプライマリアクション (転送先、リダイレクト先、または固定レスポンスを返す) を選択します。

  11. 必要に応じてプライマリアクションを設定する

  12. [保存] を選択します。

CLI を使用して JWT 検証を設定するには

次の create-rule コマンドを使用して、JWT 検証 を設定します。

JWTs を検証するアクションを使用してリスナールールを作成します。リスナーは HTTPS リスナーである必要があります。

aws elbv2 create-rule \ --listener-arn listener-arn \ --priority 10 \ --conditions Field=path-pattern,Values="/login" \ --actions file://actions.json

以下は、 jwt-validationアクションと forwardアクションを指定する actions.json ファイルの例です。ID プロバイダーから提供されたドキュメントに従って、サポートされているフィールドを確認してください。

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com" }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

次の例では、検証する追加のクレームを指定します。

--actions '[ { "Type":"jwt-validation", "JwtValidationConfig":{ "JwksEndpoint":"https://issuer.example.com/.well-known/jwks.json", "Issuer":"https://issuer.com", "AdditionalClaims":[ { "Format":"string-array", "Name":"claim_name", "Values":["value1","value2"] } ], }, "Order":1 }, { "Type":"forward", "TargetGroupArn":"target-group-arn", "Order":2 } ]'

詳細については、「Application Load Balancer のリスナールール」を参照してください。