あなたはCognito User PoolsとAPI Gateway(Cognitoオーソライザー使用)で保護されたREST APIを開発しています。 APIのバックエンドでは、JWTトークン内のユーザーのサブスクリプションプラン('basic'/'premium')に基づいてレスポンスを変えたいと考えています。 サブスクリプション情報はCognitoのカスタム属性として保存されています。 このカスタム属性をJWTのIDトークンに含めるための最も適切な方法はどれですか?
Cognito User PoolsのPre Token Generationトリガーを使うと、トークン発行前にLambda関数でIDトークン・アクセストークンのclaimsをカスタマイズできます。カスタム属性はデフォルトでは必ずしもトークンに含まれないため、このトリガーで明示的に追加する必要があります。 選択肢Aは、API Gatewayのマッピングテンプレートを使ってリクエスト時にトークンの内容を書き換えると、発行済みJWTの署名検証が失敗します。 選択肢Bは、LambdaオーソライザーでトークンをデコードしてカスタムクレームをHTTPヘッダーに付け直す方法は、バックエンド側で常にヘッダーを確認する必要があり、JWTの利点を活かせません。 選択肢Dは、カスタム属性名に'custom:'プレフィックスを付けても自動的にはIDトークンに含まれず、Pre Token Generationトリガーで明示的に追加する必要があります。