あるチームは Cognito を使ったモバイルアプリを開発しています。アプリは Cognito ユーザープールでサインイン後に返される ID トークン・アクセストークン・リフレッシュトークンの 3 種類のトークンを使用します。「ユーザーの属性(email、カスタム属性)を取得する」ためには、どのトークンを API Gateway のオーソライザーとして使うべきですか?
- A. ID トークンを使用し、API Gateway の Lambda Authorizer でデコードしてユーザー属性を検証する
- B. リフレッシュトークンを Authorization ヘッダーに含めて API Gateway に送る
- C. アクセストークンを Authorization ヘッダーに含めて API Gateway の Cognito オーソライザーを設定する
- D. ID トークンを Authorization ヘッダーに含めて API Gateway の Cognito オーソライザーを設定する
解答と解説を見る
正解: D
ID トークンは JWT 形式でユーザーの属性(email、phone、カスタム属性など)を claims として含みます。API Gateway の Cognito オーソライザーは ID トークンまたはアクセストークンを検証できますが、ユーザー属性を取得する必要がある場合は ID トークンを使用します。アクセストークンはスコープベースのアクセス制御に使用されますが、ユーザー属性の claims は含まれません。B のリフレッシュトークンは新しいアクセス/ID トークンの取得にのみ使用するもので、API 認証に使うものではありません。C はアクセストークンは属性 claims がなく要件を満たしません。A は Lambda Authorizer を使う必要があると言っていますが、Cognito オーソライザーで直接 ID トークンを検証できるためオーバーエンジニアリングです。
📚 関連サービスの解説: Amazon API Gateway ・ Amazon Cognito