

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

# 리디렉션 및 권한 부여 엔드포인트
<a name="authorization-endpoint"></a>

`/oauth2/authorize` 엔드포인트는 두 개의 리디렉션 대상을 지원하는 리디렉션 엔드포인트입니다. URL에 `identity_provider` 또는 `idp_identifier` 파라미터를 포함하면 사용자를 해당 ID 제공업체(IdP)의 로그인 페이지로 자동 리디렉션합니다. 그렇지 않으면 요청에 포함된 것과 동일한 URL 파라미터를 사용하여 [Login 엔드포인트](login-endpoint.md)로 리디렉션됩니다.

권한 부여 엔드포인트는 관리형 로그인이나 IdP 로그인 페이지로 리디렉션됩니다. 이 엔드포인트에서 사용자 세션의 대상은 사용자가 브라우저에서 직접 상호 작용해야 하는 웹 페이지입니다.

권한 부여 엔드포인트를 사용하려면 사용자 풀에 다음 사용자 풀 세부 정보에 대한 정보를 제공하는 매개변수를 사용하여 `/oauth2/authorize`에서 사용자 브라우저를 호출하세요.
+ 로그인할 앱 클라이언트입니다.
+ 최종 콜백 URL입니다.
+ 사용자의 액세스 토큰에서 요청할 OAuth 2.0 범위입니다.
+ 필요에 따라 로그인하는 데 사용할 서드 파티 IdP입니다.

Amazon Cognito가 수신 클레임을 검증하는 데 사용하는 `state` 및 `nonce` 파라미터를 제공할 수도 있습니다.

## GET `/oauth2/authorize`
<a name="get-authorize"></a>

`/oauth2/authorize` 엔드포인트는 `HTTPS GET`만 지원합니다. 대체로 앱은 사용자의 브라우저에서 이 요청을 시작합니다. HTTPS를 통해서만 `/oauth2/authorize` 엔드포인트에 요청할 수 있습니다.

[권한 부여 엔드포인트](http://openid.net/specs/openid-connect-core-1_0.html#ImplicitAuthorizationEndpoint)에서 OpenID Connect(OIDC) 표준의 권한 부여 엔드포인트 정의에 대해 자세히 알아볼 수 있습니다.

### 요청 파라미터
<a name="get-authorize-request-parameters"></a>

**`response_type`**  
필수 사항입니다.  
응답 유형이며 `code` 또는 `token`이어야 합니다.  
`code`의 `response_type`이 있는 성공적인 요청은 권한 부여 코드 부여를 반환합니다. 권한 부여 코드 부여는 Amazon Cognito가 리디렉션 URL에 추가하는 `code` 파라미터입니다. 앱에서는 액세스, ID 및 새로 고침 토큰을 위해 [Token 엔드포인트](token-endpoint.md)와 코드를 교환할 수 있습니다. 보안 모범 사례로 사용자를 위한 새로 고침 토큰을 받으려면 앱에서 권한 부여 코드 부여를 사용하세요.  
`token`의 `response_type`이 있는 성공적인 요청은 암시적 권한 부여를 반환합니다. 암시적 권한 부여는 Amazon Cognito가 리디렉션 URL에 추가하는 ID 및 액세스 토큰입니다. 암시적 권한 부여는 토큰과 잠재적인 식별 정보를 사용자에게 노출하기 때문에 덜 안전합니다. 앱 클라이언트 구성에서 암시적 권한 부여에 대한 지원을 비활성화할 수 있습니다.

**`client_id`**  
필수 사항입니다.  
앱 클라이언트 ID입니다.  
`client_id` 값은 요청한 사용자 풀에 있는 앱 클라이언트의 ID여야 합니다. 앱 클라이언트는 Amazon Cognito 로컬 사용자 또는 하나 이상의 서드 파티 IdP 로그인을 지원해야 합니다.

**`redirect_uri`**  
필수 사항입니다.  
Amazon Cognito가 사용자에게 권한을 부여한 후 인증 서버에서 브라우저를 리디렉션하는 URL입니다.  
리디렉션 URI(Uniform Resource Identifier)의 속성은 다음과 같아야 합니다.  
+ 절대 URI이어야 합니다.
+ 클라이언트를 사용하여 URI를 미리 등록했어야 합니다.
+ 여기에는 조각 구성 요소가 없어야 합니다.
[OAuth 2.0 - Redirection Endpoint](https://tools.ietf.org/html/rfc6749#section-3.1.2) 섹션을 참조하세요.  
Amazon Cognito를 사용하려면 리디렉션 URI에서 테스트 목적으로 콜백 URL로 설정할 수 있는 HTTPS를 사용해야 합니다(`http://localhost` 제외).  
또한 Amazon Cognito는 `myapp://example`과 같은 앱 콜백 URL을 지원합니다.

**`state`**  
선택 사항, 권장됨.  
앱이 요청에 *state* 파라미터를 추가하면 `/oauth2/authorize` 엔드포인트가 사용자를 리디렉션할 때 Amazon Cognito가 해당 값을 앱으로 반환합니다.  
이 값을 요청에 추가하여 [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) 공격으로부터 보호할 수 있습니다.  
`state` 파라미터의 값을 URL 인코딩 JSON 문자열로 설정할 수 없습니다. `state` 파라미터에서 이 형식과 일치하는 문자열을 전달하려면 문자열을 base64로 인코딩한 다음 앱에서 디코딩하면 됩니다.

**`identity_provider`**  
선택 사항.  
관리형 로그인을 무시하고 사용자를 공급자 로그인 페이지로 리디렉션하려면 이 파라미터를 추가합니다. *identity\$1provider* 파라미터의 값은 사용자 프로필에 나타나는 대로 자격 증명 공급자(IdP)의 이름입니다.  
+ 소셜 공급자의 경우 *identity\$1provider* 값 `Facebook`, `Google`, `LoginWithAmazon` 및 `SignInWithApple`를 사용할 수 있습니다.
+ Amazon Cognito 사용자 풀의 경우 `COGNITO` 값을 사용합니다.
+ SAML 2.0 및 OpenID Connect(OIDC) ID 제공업체(idP)의 경우 사용자 풀의 IdP에 할당한 이름을 사용합니다.

**`idp_identifier`**  
선택 사항.  
*identity\$1provider* 이름에 대한 대체 이름을 가진 공급자로 리디렉션할 이 파라미터를 추가합니다. Amazon Cognito 콘솔의 **소셜 및 외부 공급자** 메뉴에서 SAML 2.0 및 OIDC IdP의 식별자를 입력할 수 있습니다.

**`scope`**  
선택 사항.  
시스템에 예약된 범위나 클라이언트와 연결된 사용자 지정 범위를 조합하여 사용할 수 있습니다. 범위는 공백으로 구분해야 합니다. 시스템에 예약된 범위로는 `openid`, `email`, `phone`, `profile` 및 `aws.cognito.signin.user.admin`이 있습니다. 사용된 범위는 클라이언트와 연결되어 있어야 합니다. 그렇지 않으면 런타임 시 무시됩니다.  
클라이언트가 범위를 요청하지 않은 경우 인증 서버에서는 클라이언트와 연결된 모든 범위를 사용합니다.  
`openid` 범위가 요청될 경우에만 ID 토큰이 반환됩니다. `aws.cognito.signin.user.admin` 범위가 요청된 경우에만 Amazon Cognito 사용자 풀에 대해 액세스 토큰을 사용할 수 있습니다. `phone` 범위도 요청된 경우에만 `email`, `profile` 및 `openid` 범위를 요청할 수 있습니다. 이러한 범위는 ID 토큰 내부로 들어가는 클레임을 지정합니다.

**`code_challenge_method`**  
선택 사항.  
문제를 생성하는 데 사용한 해싱 프로토콜입니다. [PKCE RFC](https://tools.ietf.org/html/rfc7636)는 S256 및 일반의 두 가지 메서드를 정의하지만 Amazon Cognito 인증 서버는 S256만 지원합니다.

**`code_challenge`**  
선택 사항.  
`code_verifier`에서 생성한 키 코드 교환(PKCE) 문제의 증거입니다. 자세한 내용은 [권한 부여 코드 부여에서 PKCE 사용](using-pkce-in-authorization-code.md) 단원을 참조하십시오.  
`code_challenge_method` 파라미터를 지정하는 경우에만 필수입니다.

**`nonce`**  
선택 사항.  
요청에 추가할 수 있는 임의 값입니다. 제공한 임시 값은 Amazon Cognito가 발행하는 ID 토큰에 포함되어 있습니다. 재생 공격을 방지하기 위해 앱은 ID 토큰의 `nonce` 클레임을 검사하고 생성한 것과 비교할 수 있습니다. `nonce` 클레임에 대한 자세한 내용은 *OpenID Connect 표준*의 [ID 토큰 유효성 검사](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation)를 참조하세요.

**`lang`**  
선택 사항.  
사용자 대화형 페이지를 표시할 언어입니다. 관리형 로그인 페이지는 현지화할 수 있지만 호스팅 UI(클래식) 페이지는 현지화할 수 없습니다. 자세한 내용은 [관리형 로그인 현지화](cognito-user-pools-managed-login.md#managed-login-localization) 단원을 참조하십시오.

**`login_hint`**  
선택 사항.  
권한 부여 서버에 전달하려는 사용자 이름 프롬프트입니다. 사용자로부터 사용자 이름, 이메일 주소 또는 전화번호를 수집하고 대상 공급자가 사용자의 로그인 이름을 미리 입력하도록 허용할 수 있습니다. `oauth2/authorize` 엔드포인트에 `login_hint` 파라미터를 제출하고 `idp_identifier` 또는 `identity_provider` 파라미터는 제출하지 않으면 관리형 로그인은 사용자 이름 필드에 힌트 값을 채웁니다. 이 파라미터를 [Login 엔드포인트](login-endpoint.md)에 전달하고 사용자 이름 값을 자동으로 채울 수도 있습니다.  
권한 부여 요청이 OIDC IdPs에 대한 리디렉션을 호출하면 Amazon Cognito는 해당 타사 권한 부여자에게 요청에 `login_hint` 파라미터를 추가합니다. 로그인 힌트는 SAML, Apple, Login With Amazon, Google 또는 Facebook(Meta) IdPs에 전달할 수 없습니다.

**`prompt`**  
선택 사항.  
기존 세션의 인증 동작을 제어하는 OIDC 파라미터입니다. 관리형 로그인 브랜딩 버전에서만 사용할 수 있으며 클래식 호스팅 UI에서는 사용할 수 없습니다. OIDC 사양에 대한 자세한 내용은 [인증 요청](https://openid.net/specs/openid-connect-core-1_0.html#AuthRequest)을 참조하세요. `none` 및 `login` 값은 사용자 풀 인증 동작에 영향을 미칩니다.  
사용자가 타사 제공업체를 통한 인증을 선택하면 Amazon Cognito는 `none`을 제외한 모든 `prompt` 값을 IdP에 전달합니다. 사용자가 액세스하는 URL에 `identity_provider` 또는 `idp_identifier` 파라미터가 포함되거나 권한 부여 서버가 해당 URL을 로 리디렉션하고 사용 가능한 버튼에서 [Login 엔드포인트](login-endpoint.md) 및 IdP를 선택하는 경우에도 마찬가지입니다.  
**프롬프트 파라미터 값**    
`prompt=none`  
Amazon Cognito는 유효한 인증 세션이 있는 사용자에 대해 자동으로 인증을 계속합니다. 이 프롬프트를 사용하면 사용자는 사용자 풀의 여러 앱 클라이언트 간에 자동으로 인증할 수 있습니다. 사용자가 아직 인증되지 않은 경우 권한 부여 서버는 `login_required` 오류를 반환합니다.  
`prompt=login`  
Amazon Cognito에서는 사용자가 기존 세션이 있더라도 다시 인증해야 합니다. 사용자의 ID를 다시 확인하려는 경우 이 값을 전송합니다. 기존 세션이 있는 인증된 사용자는 해당 세션을 무효화하지 않고 로그인으로 돌아갈 수 있습니다. 기존 세션이 있는 사용자가 다시 로그인하면 Amazon Cognito에서 새 세션 쿠키를 할당합니다. 이 파라미터는 IdP로 전달할 수도 있습니다. 이 파라미터를 수락하는 IdP도 사용자에게 새 인증 시도를 요청합니다.  
`prompt=select_account`  
이 값은 로컬 로그인에 영향을 주지 않으며 IdP로 리디렉션되는 요청에서 제출해야 합니다. 권한 부여 요청에 포함된 경우 이 파라미터는 IdP 리디렉션 대상의 URL 경로에 `prompt=select_account`를 추가합니다. IdP가 파라미터를 지원할 때 사용자에게 로그인하려는 계정을 선택하도록 요청합니다.  
`prompt=consent`  
이 값은 로컬 로그인에 영향을 주지 않으며 IdP로 리디렉션되는 요청에서 제출해야 합니다. 권한 부여 요청에 포함된 경우 이 파라미터는 IdP 리디렉션 대상의 URL 경로에 `prompt=consent`를 추가합니다. IdP가 파라미터를 지원하는 경우 사용자 풀로 다시 리디렉션하기 전에 사용자 동의를 요청합니다.
요청에서 `prompt` 파라미터를 생략하면 관리형 로그인은 기본 동작을 따릅니다. 브라우저에 유효한 관리형 로그인 세션 쿠키가 없는 한 사용자는 로그인해야 합니다. `prompt`에 대해 여러 값을 공백 문자 구분 기호로 결합할 수 있습니다(예: `prompt=login consent`).

**`resource`**  
선택 사항.  
`aud` 클레임의 액세스 토큰에 바인딩하려는 리소스의 식별자입니다. 이 파라미터를 포함하면 Amazon Cognito는 값이 URL인지 확인하고 결과 액세스 토큰의 대상을 요청된 리소스로 설정합니다. URL 형식의 식별자 또는 원하는 URL을 사용하여 사용자 풀 [리소스 서버](cognito-user-pools-define-resource-servers.md)를 요청할 수 있습니다. 이 파라미터의 값은 `https://`, `http://localhost`또는 `myapp://`과 같은 사용자 지정 URL 체계로 시작해야 합니다.  
리소스 바인딩은 [RFC 8707](https://www.rfc-editor.org/rfc/rfc8707.html)에 정의되어 있습니다. 리소스 서버 및 리소스 바인딩에 대한 자세한 내용은 [리소스 바인딩](cognito-user-pools-define-resource-servers.md#cognito-user-pools-resource-binding)을 참조하세요.

## 예: 권한 부여 코드 부여
<a name="sample-authorization-code-grant"></a>

이는 권한 부여 코드 부여에 대한 요청의 예입니다.

다음 요청은 사용자가 `redirect_uri` 대상의 앱에 전달하는 권한 부여 코드를 검색하는 세션을 시작합니다. 이 세션은 사용자 속성 및 Amazon Cognito 셀프 서비스 API 작업에 대한 액세스 범위를 요청합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin
```

Amazon Cognito 인증 서버는 권한 부여 코드 및 상태를 통해 앱으로 다시 리디렉션합니다. 권한 부여 코드는 5분 동안 유효합니다.

```
HTTP/1.1 302 Found
Location: https://www.example.com?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
```

## 예: PKCE를 통한 권한 부여 코드 부여
<a name="sample-authorization-code-grant-with-pkce"></a>

이 예제 흐름은 [PKCE](using-pkce-in-authorization-code.md#using-pkce-in-authorization-code.title)를 사용하여 권한 부여 코드를 부여합니다.

이 요청은 `code_challenge` 파라미터를 추가합니다. 토큰에 대한 코드 교환을 완료하려면 `/oauth2/token` 엔드포인트에 대한 요청에 `code_verifier` 파라미터를 포함해야 합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=aws.cognito.signin.user.admin&
code_challenge_method=S256&
code_challenge=a1b2c3d4...
```

권한 부여 서버는 권한 부여 코드 및 상태를 통해 애플리케이션으로 다시 리디렉션합니다. 애플리케이션은 권한 부여 코드를 처리하고 토큰으로 교환합니다.

```
HTTP/1.1 302 Found
Location: https://www.example.com?code=a1b2c3d4-5678-90ab-cdef-EXAMPLE11111&state=abcdefg
```

## 예: `prompt=login`를 사용하여 재인증 필요
<a name="sample-authorization-code-with-prompt-login"></a>

다음 요청은 기존 세션이 있더라도 사용자가 다시 인증해야 하는 `prompt=login` 파라미터를 추가합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin&
prompt=login
```

권한 부여 서버는 [로그인 엔드포인트](login-endpoint.md)로 리디렉션되므로 재인증이 필요합니다.

```
HTTP/1.1 302 Found Location: https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com&state=abcdefg&scope=openid+profile+aws.cognito.signin.user.admin&prompt=login
```

## 예: `prompt=none`를 사용한 자동 인증
<a name="sample-authorization-code-with-prompt-none"></a>

다음 요청은 사용자에게 유효한 세션이 있는지 자동으로 확인하는 `prompt=none` 파라미터를 추가합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=openid+profile+aws.cognito.signin.user.admin&
prompt=none
```

유효한 세션이 없는 경우 권한 부여 서버는 리디렉션 URI에 오류를 반환합니다.

```
HTTP/1.1 302 Found Location: https://www.example.com?error=login_required&state=abcdefg
```

유효한 세션이 있으면 권한 부여 서버가 권한 부여 코드를 반환합니다.

```
HTTP/1.1 302 Found Location: https://www.example.com?code=AUTHORIZATION_CODE&state=abcdefg
```

## 예: 리소스 바인딩을 사용한 권한 부여 코드 부여
<a name="sample-authorization-code-with-resource-binding"></a>

다음 요청은 액세스 토큰을 특정 리소스 서버에 바인딩하는 `resource` 파라미터를 추가합니다. 결과 액세스 토큰은 대상 API가 인증된 사용자 요청의 대상인지 확인하기 위한 조건을 생성합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=code&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=solar-system-data-api.example.com/asteroids.add&
resource=https://solar-system-data-api.example.com
```

인증 서버는 `https://solar-system-data-api.example.com`의 `aud` 클레임이 포함된 액세스 토큰을 생성하는 인증 코드를 반환합니다.

```
HTTP/1.1 302 Found Location: https://www.example.com?code=AUTHORIZATION_CODE&state=abcdefg
```

## 예: `openid` 범위가 없는 토큰(암시적) 권한 부여
<a name="sample-token-grant-without-openid-scope"></a>

이 예제 흐름은 암묵적 허가를 생성하고 JWT를 사용자 세션에 직접 반환합니다.

이 요청은 권한 부여 서버의 암시적 권한 부여에 대한 것입니다. 사용자 프로필 셀프 서비스 작업을 승인하는 액세스 토큰의 범위를 요청합니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?
response_type=token&
client_id=1example23456789&
redirect_uri=https://www.example.com&
state=abcdefg&
scope=aws.cognito.signin.user.admin
```

인증 서버는 액세스 토큰만을 사용하여 애플리케이션으로 다시 리디렉션합니다. `openid` 범위가 요청되지 않았기 때문에 Amazon Cognito에서 ID 토큰을 반환하지 않습니다. 또한 Amazon Cognito는 이 흐름에서 새로 고침 토큰을 반환하지 않습니다.

```
HTTP/1.1 302 Found
Location: https://example.com/callback#access_token=eyJra456defEXAMPLE&token_type=bearer&expires_in=3600&state=STATE
```

## 예: `openid` 범위가 있는 토큰(암시적) 권한 부여
<a name="sample-token-grant-with-openid-scope"></a>

이 예제 흐름은 암시적 권한 부여를 생성하고 사용자 브라우저에 토큰을 반환합니다.

이 요청은 권한 부여 서버의 암시적 권한 부여에 대한 것입니다. 이는 사용자 속성과 셀프 서비스 작업에 대한 액세스를 승인하는 액세스 토큰의 범위를 요청합니다.

```
GET
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize? 
response_type=token& 
client_id=1example23456789& 
redirect_uri=https://www.example.com& 
state=abcdefg&
scope=aws.cognito.signin.user.admin+openid+profile
```

권한 부여 서버는 액세스 토큰 및 ID 토큰을 통해 애플리케이션으로 다시 리디렉션합니다(`openid` 범위가 포함되어 있기 때문).

```
HTTP/1.1 302 Found
Location: https://www.example.com#id_token=eyJra67890EXAMPLE&access_token=eyJra12345EXAMPLE&token_type=bearer&expires_in=3600&state=abcdefg
```

## 부정 응답 예제
<a name="get-authorize-negative"></a>

Amazon Cognito가 요청을 거부할 수 있습니다. 부정 요청에는 HTTP 오류 코드와 요청 파라미터를 수정하는 데 사용할 수 있는 설명이 함께 제공됩니다. 다음은 부정 응답의 예입니다.
+ `client_id` 및 `redirect_uri`는 유효하지만 요청 파라미터의 형식이 올바르게 지정되지 않은 경우 인증 서버가 오류를 클라이언트의 `redirect_uri`로 리디렉션하고 URL 파라미터에 오류 메시지를 추가합니다. 다음은 잘못된 형식의 예입니다.
  + 요청에 `response_type` 파라미터가 포함되지 않습니다.
  + 권한 부여 요청은 `code_challenge` 파라미터를 제공했지만 `code_challenge_method` 파라미터는 제공하지 않았습니다.
  + `code_challenge_method` 파라미터의 값이 `S256`이 아닙니다.

  다음은 잘못된 형식의 예시 요청에 대한 응답입니다.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request
  ```
+ 클라이언트가 `response_type`에서 `code` 또는 `token`을 요청했는데 이러한 요청에 대한 권한이 없는 경우 Amazon Cognito 권한 부여 서버에서 다음과 같이 `unauthorized_client`를 클라이언트의 `redirect_uri`에 반환합니다.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=unauthorized_client
  ```
+  클라이언트가 알 수 없거나, 형식이 잘못되었거나, 유효하지 않은 범위를 요청한 경우 Amazon Cognito 권한 부여 서버에서 다음과 같이 `invalid_scope`를 클라이언트의 `redirect_uri`에 반환합니다.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_scope
  ```
+ 서버에 예상치 못한 오류가 있는 경우 인증 서버는 클라이언트의 `redirect_uri`에 `server_error`를 반환합니다. HTTP 500 오류는 클라이언트로 전송되지 않기 때문에 사용자의 브라우저에 오류가 표시되지 않습니다. 권한 부여 서버가 다음 오류를 반환합니다.

  ```
  HTTP 1.1 302 Found Location: https://client_redirect_uri?error=server_error
  ```
+ Amazon Cognito가 서드 파티 IdP로의 페더레이션을 통해 인증할 때 Amazon Cognito에서 다음과 같은 연결 문제가 발생할 수 있습니다.
  + IdP에게 토큰을 요청하는 동안 연결 제한 시간이 발생하면 인증 서버가 다음과 같이 오류를 클라이언트의 `redirect_uri`로 리디렉션합니다.

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Timeout+occurred+in+calling+IdP+token+endpoint
    ```
  + ID 토큰 검증을 위해 `jwks_uri` 엔드포인트를 호출하는 동안 연결 제한 시간이 발생하면 인증 서버가 다음과 같이 오류를 클라이언트의 `redirect_uri`로 리디렉션합니다.

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=error_description=Timeout+in+calling+jwks+uri
    ```
+ 타사 IdP에 페더레이션하여 인증할 때 공급자는 오류 응답을 반환할 수 있습니다. 이는 구성 오류 또는 다음과 같은 기타 이유 때문일 수 있습니다.
  + 다른 공급자로부터 오류 응답이 수신되면 인증 서버가 다음과 같이 오류를 클라이언트의 `redirect_uri`로 리디렉션합니다.

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=[IdP name]+Error+-+[status code]+error getting token
    ```
  + Google로부터 오류 응답이 수신되면 인증 서버가 다음과 같이 오류를 클라이언트의 `redirect_uri`로 리디렉션합니다.

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Google+Error+-+[status code]+[Google-provided error code]
    ```
+ Amazon Cognito가 외부 I연결하는 동안 통신 예외가 발생하면 인증 서버는 오류와 함께 다음 메시지 중 하나와 함께 클라이언트의 `redirect_uri`로 리디렉션합니다.
  + 

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Connection+reset
    ```
  + 

    ```
    HTTP 1.1 302 Found Location: https://client_redirect_uri?error=invalid_request&error_description=Read+timed+out
    ```