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