ユーザー属性エンドポイント - Amazon Cognito

ユーザー属性エンドポイント

OIDC がユーザー属性を含む ID トークンを発行する場合、OAuth 2.0 は /oauth2/userInfo エンドポイントを実装します。認証されたユーザーまたはクライアントは、scopes クレームを含むアクセストークンを受け取ります。このクレームは、認可サーバーが返す属性を決定します。アプリケーションが userInfo エンドポイントにアクセストークンを提示すると、認可サーバーは、アクセストークンスコープによって設定された境界内にあるユーザー属性を含む応答本文を返します。アプリケーションは、少なくとも openid スコープクレームを持つ有効なアクセストークンを保持している限り、userInfo エンドポイントからユーザーに関する情報を取得できます。

userInfo エンドポイントは OpenID Connect (OIDC) userInfo エンドポイントです。トークントークンエンドポイントが発行したアクセストークンをサービスプロバイダーが提示すると、ユーザー属性で応答します。ユーザーのアクセストークンのスコープは、userInfo エンドポイントがレスポンスで返すユーザー属性を定義します。openid スコープはアクセストークンクレームのいずれかである必要があります。

Amazon Cognito は、InitiateAuth などのユーザープール API リクエストに応答してアクセストークンを発行します。スコープが含まれていないため、userInfo エンドポイントはこれらのアクセストークンを受け入れません。代わりに、トークンエンドポイントからアクセストークンを提示する必要があります。

OAuth 2.0 サードパーティーの ID プロバイダー (IdP) は、userInfo エンドポイントもホストしています。ユーザーがその IdP で認証すると、Amazon Cognito は、IdP token エンドポイントと認可コードを表示せずに交換します。ユーザープールは IdP アクセストークンを渡して、IdP userInfo エンドポイントからのユーザー情報の取得を認可します。

GET /oauth2/userInfo

アプリは、ブラウザ経由ではなく、このエンドポイントに直接リクエストを送信します。

詳細については、OpenID Connect (OIDC) 仕様の「UserInfo エンドポイント」を参照してください。

ヘッダーのリクエストパラメータ

Authorization: Bearer <access_token>

認可ヘッダーフィールド内でアクセストークンを渡します。

必須。

例 – リクエスト

GET /oauth2/userInfo HTTP/1.1 Content-Type: application/x-amz-json-1.1 Authorization: Bearer eyJra12345EXAMPLE User-Agent: [User agent] Accept: */* Host: auth.example.com Accept-Encoding: gzip, deflate, br Connection: keep-alive

例 – 肯定応答

HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 Content-Length: [Integer] Date: [Timestamp] x-amz-cognito-request-id: [UUID] X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Cache-Control: no-cache, no-store, max-age=0, must-revalidate Pragma: no-cache Expires: 0 Strict-Transport-Security: max-age=31536000 ; includeSubDomains X-Frame-Options: DENY Server: Server Connection: keep-alive { "sub": "[UUID]", "email_verified": "true", "custom:mycustom1": "CustomValue", "phone_number_verified": "true", "phone_number": "+12065551212", "email": "bob@example.com", "username": "bob" }

OIDC クレームのリストについては、「スタンダードクレーム」を参照してください。現在、Amazon Cognito は、email_verified と phone_number_verified の値を文字列として返します。

否定応答の例

例 – 不正なリクエスト

HTTP/1.1 400 Bad Request WWW-Authenticate: error="invalid_request", error_description="Bad OAuth2 request at UserInfo Endpoint"
invalid_request

リクエストに必須パラメータが含まれていないか、サポートされていないパラメータ値が含まれているか、または正しい形式ではありません。

例 – 不正なトークン

HTTP/1.1 401 Unauthorized WWW-Authenticate: error="invalid_token", error_description="Access token is expired, disabled, or deleted, or the user has globally signed out."
invalid_token

アクセストークンの有効期限が切れているか、失効しているか、正しい形式ではないか、または無効です。