DVAセキュリティ
REST APIをAmazon API Gateway(REST API)で公開しています。クライアントはAmazon Cognito User Poolsで認証を行い、取得したIDトークンをリクエストのAuthorizationヘッダーに含めてAPIを呼び出します。
開発者は以下の検証を自動化したいと考えており、追加のカスタム認可ロジックは不要です。
- JWTの署名検証
- 有効期限チェック
- 発行元(issuer)の確認
実装が最もシンプルな方法はどれですか?
AAPI GatewayにCognito User Poolオーソライザーを設定し、トークンソースをAuthorizationヘッダーに指定する
✓ 正解
Cognito User PoolオーソライザーはJWT署名・有効期限・issuerをコードなしで自動検証します。追加ロジック不要のシナリオでは最もシンプルな実装で、AuthorizationヘッダーのIDトークンを直接検証できます。
BLambda オーソライザーを作成し、JWTライブラリを使って署名・有効期限・発行元を検証するコードを実装する
Lambdaオーソライザーはカスタムロジックが必要な場合に使用します。Cognitoトークンのみの検証であれば実装コストが高く不適切です。JWTライブラリの維持管理も別途必要になります。
CAPI Gatewayのリソースポリシーを設定し、Cognito User PoolのARNからのリクエストのみ許可する
リソースポリシーはVPCエンドポイントや特定アカウントからのアクセス制御に使用します。JWTトークンの署名検証機能はなく、Cognito認証済みユーザーの制御には使用できません。
DAPI GatewayのCORSを有効化し、Cognitoドメインをオリジンとして許可することでトークンを検証する
CORSはブラウザのクロスオリジンリクエストを許可する設定であり、認証・認可の仕組みではありません。Cognitoドメインの許可はトークン検証とは無関係です。
解説
Amazon Cognito User Poolオーソライザーは、API GatewayのネイティブオーソライザーとしてJWTの署名検証・有効期限チェック・発行元(User Pool)の確認をコードなしで自動的に実行します。AuthorizationヘッダーからIDトークンを取得し、設定したUser Poolに対して検証を行うため、追加のカスタムロジックが不要な場合は最もシンプルな選択です。
選択肢BのLambdaオーソライザーは、カスタム認可ロジック(例:DBを参照した動的なポリシー生成、サードパーティJWT検証)が必要な場合に適していますが、Cognitoのみで完結する場合はCognitoオーソライザーが適切です。
選択肢CのAPI Gatewayリソースポリシーは、AWS IAM認証(AWS_IAM)を使用する際や特定のVPCエンドポイントからのアクセス制限に使用するものであり、JWTトークンの検証機能はありません。
選択肢DのCORSはオリジン間リソース共有の設定であり、認証・認可とは無関係です。
ドメイン別正答率・予想スコアでリアルタイムに実力把握
無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。
無料で演習を始める →