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

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

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

Application Load Balancer (ALB) を設定して、安全なservice-to-service (S2S) またはmachine-to-machine (JWT) を検証できます。ロードバランサーは、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 に転送します。

コンソールを使用して 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 のリスナールール」を参照してください。