DVAセキュリティ

Amazon Cognito User Poolで認証を実装したWebアプリがある。API GatewayのCognitoオーソライザーを使用しており、バックエンドAPIはJWTのIDトークン内のクレーム(属性情報)を参照してアクセス制御を行う。ユーザーの「部署コード」と「管理者フラグ」を、毎回のサインイン時に自動的にIDトークンへ含めたい。最も適切な実装方法はどれか?

A
API Gatewayのリクエストマッピングテンプレートでユーザー属性をDynamoDBから取得しリクエストヘッダーに付加する
API Gatewayのリクエストマッピングテンプレートは、ユーザー属性をDynamoDBから取得できますが、トークン内容を変更することはできません。
B
Cognito User PoolのPre token generation Lambdaトリガーを設定し、claimsOverrideDetailsでカスタムクレームをIDトークンに追加する
✓ 正解
Cognito User PoolのPre token generation Lambdaトリガーはトークン発行直前に呼び出され、レスポンスのclaimsOverrideDetailsを使ってIDトークンへカスタムクレームを追加・上書き・削除できます。バックエンドはトークン検証だけで認可判断が可能になります。
C
Cognito Identity Poolに切り替えて、IAMロールのセッションタグとしてユーザー属性を渡す
Cognito Identity Poolへの切り替えは、フェデレーション用途であり、この目的とは異なります。
D
サインイン成功後にEventBridgeルールでユーザー属性を取得し、WebSocketで別途クライアントに配信する
EventBridgeでユーザー属性を取得しWebSocketで配信する方法は、トークンへのカスタムクレーム追加とは無関係です。

解説

Cognito User PoolのPre token generation Lambdaトリガーはトークン発行直前に呼び出され、レスポンスのclaimsOverrideDetailsを使ってIDトークンへカスタムクレームを追加・上書き・削除できます。バックエンドはトークン検証だけで認可判断が可能になります。 選択肢AのAPI Gatewayのリクエストマッピングテンプレートは、ユーザー属性をDynamoDBから取得できますが、トークン内容を変更することはできません。 選択肢CのCognito Identity Poolへの切り替えは、フェデレーション用途であり、この目的とは異なります。 選択肢DのEventBridgeでユーザー属性を取得しWebSocketで配信する方法は、トークンへのカスタムクレーム追加とは無関係です。

ドメイン別正答率・予想スコアでリアルタイムに実力把握

無限ノックでDVAを徹底対策。全問AI生成のオリジナル問題。

無料で演習を始める →
DVA の問題一覧に戻る