

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 사용자 속성 엔드포인트
<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) 사양의 [UserInfoEndpoint](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`**  
액세스 토큰이 만료되었거나, 취소되었거나, 형식이 잘못되었거나, 유효하지 않습니다.