Amazon Cognito User Poolで認証を実装したWebアプリがある。API GatewayのCognitoオーソライザーを使用しており、バックエンドAPIはJWTのIDトークン内のクレーム(属性情報)を参照してアクセス制御を行う。ユーザーの「部署コード」と「管理者フラグ」を、毎回のサインイン時に自動的にIDトークンへ含めたい。最も適切な実装方法はどれか?
Cognito User PoolのPre token generation Lambdaトリガーはトークン発行直前に呼び出され、レスポンスのclaimsOverrideDetailsを使ってIDトークンへカスタムクレームを追加・上書き・削除できます。バックエンドはトークン検証だけで認可判断が可能になります。 選択肢AのAPI Gatewayのリクエストマッピングテンプレートは、ユーザー属性をDynamoDBから取得できますが、トークン内容を変更することはできません。 選択肢CのCognito Identity Poolへの切り替えは、フェデレーション用途であり、この目的とは異なります。 選択肢DのEventBridgeでユーザー属性を取得しWebSocketで配信する方法は、トークンへのカスタムクレーム追加とは無関係です。