

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザー属性エンドポイント
<a name="userinfo-endpoint"></a>

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

`userInfo` エンドポイントは OpenID Connect (OIDC) [userInfo エンドポイント](https://openid.net/specs/openid-connect-core-1_0.html#UserInfo)です。[トークントークンエンドポイント](token-endpoint.md)が発行したアクセストークンをサービスプロバイダーが提示すると、ユーザー属性で応答します。ユーザーのアクセストークンのスコープは、userInfo エンドポイントがレスポンスで返すユーザー属性を定義します。`openid` スコープはアクセストークンクレームのいずれかである必要があります。

Amazon Cognito は、[https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) などのユーザープール API リクエストに応答してアクセストークンを発行します。スコープが含まれていないため、userInfo エンドポイントはこれらのアクセストークンを受け入れません。代わりに、トークンエンドポイントからアクセストークンを提示する必要があります。

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

ユーザーのアクセストークンのスコープは、認証リクエストの `scopes` リクエストパラメータ、または[トークン生成前の Lambda トリガー](user-pool-lambda-pre-token-generation.md)が追加するスコープによって決まります。アクセストークンをデコードし、`scope` クレームを調べることで、それらに含まれるアクセスコントロールのスコープを確認できます。以下は、`userInfo` エンドポイントから返されるデータに影響を与えるスコープの組み合わせです。予約済みの Amazon Cognito スコープ `aws.cognito.signin.user.admin` は、このエンドポイントから返されるデータには影響しません。アクセストークンのスコープの例と `userInfo` レスポンスへの影響

**`openid`**  
アプリケーションクライアントが読み取れるすべてのユーザー属性を含むレスポンスを返します。

**`openid profile`**  
ユーザー属性として、`name`、`family_name`、`given_name`、`middle_name`、`nickname`、`preferred_username`、`profile`、`picture`、`website`、`gender`、`birthdate`、`zoneinfo`、`locale`、`updated_at` を返します。また、[カスタム属性](user-pool-settings-attributes.md#user-pool-settings-custom-attributes)も返します。各属性への読み取りアクセス権を持たないアプリケーションクライアントの場合、このスコープへのレスポンスは、アプリケーションクライアントが読み取りアクセス権を持つ仕様内のすべての属性となります。

**`openid email`**  
基本的なプロファイル情報と、`email` 属性および `email_verified` 属性を返します。

**`openid phone`**  
基本的なプロファイル情報と、`phone_number` 属性および `phone_number_verified` 属性を返します。

## GET /oauth2/userInfo
<a name="get-userinfo"></a>

アプリケーションは、ブラウザ経由ではなく、このエンドポイントへのリクエストを直接生成します。

詳細については、OpenID Connect (OIDC) 仕様の「[UserInfo エンドポイント](http://openid.net/specs/openid-connect-core-1_0.html#UserInfo)」を参照してください。

**Topics**
+ [GET /oauth2/userInfo](#get-userinfo)
+ [ヘッダーのリクエストパラメータ](#get-userinfo-request-header-parameters)
+ [例 – リクエスト](#get-userinfo-positive-exchanging-authorization-code-for-userinfo-sample-request)
+ [例 – 肯定応答](#get-userinfo-response-sample)
+ [否定応答の例](#get-userinfo-negative)

## ヘッダーのリクエストパラメータ
<a name="get-userinfo-request-header-parameters"></a>

**`Authorization: Bearer <access_token>`**  
認可ヘッダーフィールド内でアクセストークンを渡します。  
必須。

## 例 – リクエスト
<a name="get-userinfo-positive-exchanging-authorization-code-for-userinfo-sample-request"></a>

```
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
```

## 例 – 肯定応答
<a name="get-userinfo-response-sample"></a>

```
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 クレームのリストについては、「[スタンダードクレーム](http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims)」を参照してください。現在、Amazon Cognito は、`email_verified` と `phone_number_verified` の値を文字列として返します。

## 否定応答の例
<a name="get-userinfo-negative"></a>

### 例 – 不正なリクエスト
<a name="get-userinfo-negative-400"></a>

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

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

### 例 – 不正なトークン
<a name="get-userinfo-negative-401"></a>

```
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`**  
アクセストークンの有効期限が切れているか、失効しているか、正しい形式ではないか、または無効です。