開発者はAPI Gateway + Lambda構成のREST APIにCognito User Poolsを使った認証を追加しました。ユーザーがCognitoでログインするとJWT(JSON Web Token)のIDトークンを受け取り、APIリクエストのAuthorizationヘッダーに含めて送信します。API GatewayのCognito User Poolオーソライザーがこのトークンを受け取ったとき、デフォルトで検証する内容はどれですか?
A
トークンのRS256署名、有効期限(exp)、および発行者(iss)がCognito User PoolのURLと一致するかどうか
✓ 正解
API GatewayのCognito User Poolオーソライザーは、JWTのRS256デジタル署名検証、有効期限(exp)確認、発行者(iss)がCognito URLと一致することをAPI Gateway側で自動的に検証します。3つの検証がすべてAPI Gatewayで完結するため実装要件を完全に満たします。
Cognito User PoolオーソライザーはステートレスなJWT検証の仕組みであり、DynamoDB等のセッションストアに照合することはありません。リプレイ攻撃対策はJWTの有効期限やJTIクレームで対処するものです。
解説
API GatewayのCognito User Poolオーソライザーは、JWTのRS256デジタル署名の検証、有効期限(exp)の確認、発行者(iss)がCognito User Pool URLと一致するかの3点を自動的に検証します。有効期限の確認もAPI Gateway側で完結するため「署名のみ検証でexpはアプリ側が担当」は誤りです。
Cognitoの/oauth2/userInfoエンドポイントへの毎リクエスト問い合わせは行わず、JWT検証はCognito公開鍵を使いローカルで処理されるためオーバーヘッドが少なくスケーラブルです。
Cognito User PoolオーソライザーはステートレスなJWT検証であり、DynamoDBへのセッション情報照合は行いません。
リプレイ攻撃対策はJWTの有効期限・JTIクレーム等で対処するもので、DynamoDBセッションストアは使用しません。