

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

# 관리형 로그인 로그아웃 엔드포인트: `/logout`
<a name="logout-endpoint"></a>

`/logout` 엔드포인트는 리디렉션 엔드포인트입니다. 사용자를 로그아웃하고 앱 클라이언트의 권한 부여된 로그아웃 URL 또는 `/login` 엔드포인트로 리디렉션합니다. `/logout` 엔드포인트에 대한 GET 요청에서 사용 가능한 파라미터는 Amazon Cognito 관리형 로그인 사용 사례에 맞게 조정됩니다.

로그아웃 엔드포인트는 고객과의 대화형 사용자 세션을 위한 프런트 엔드 웹 애플리케이션입니다. 앱은 사용자 브라우저에서 이 엔드포인트와 다른 관리형 로그인 엔드포인트를 호출해야 합니다.

다시 로그인할 수 있도록 사용자를 관리형 로그인으로 리디렉션하려면 요청에 `redirect_uri` 파라미터를 추가하세요. `redirect_uri` 파라미터가 있는 `logout` 요청에는`client_id`, `response_type`, `scope` 등 [Login 엔드포인트](login-endpoint.md)에 대한 후속 요청을 위한 파라미터도 포함되어야 합니다.

선택한 페이지로 사용자를 리디렉션하려면 **허용된 로그아웃 URL**을 앱 클라이언트에 추가하세요. `logout` 엔드포인트에 대한 사용자의 요청에 `logout_uri` 및 `client_id` 파라미터를 추가합니다. `logout_uri` 값이 앱 클라이언트의 **허용된 로그아웃 URL** 중 하나인 경우 Amazon Cognito는 사용자를 해당 URL로 리디렉션합니다.

SAML 2.0 IdPs용 단일 로그아웃(SLO)을 사용하면 Amazon Cognito는 먼저 사용자를 IdP 구성에서 정의한 SLO 엔드포인트로 리디렉션합니다. IdP가 사용자를 `saml2/logout`으로 리디렉션하면 Amazon Cognito는 사용자의 요청에 따라 `redirect_uri` 또는 `logout_uri`로 한 번 더 리디렉션하여 응답합니다. 자세한 내용은 [단일 로그아웃으로 SAML 사용자 로그아웃](cognito-user-pools-saml-idp-sign-out.md) 단원을 참조하십시오.

로그아웃 엔드포인트는 OIDC 또는 소셜 자격 ID 제공업체(idP)에서 사용자를 로그아웃시키지 않습니다. 외부 IdP를 사용하여 세션에서 사용자를 로그아웃하려면 해당 공급자의 로그아웃 페이지로 안내합니다.

## GET /logout
<a name="get-logout"></a>

`/logout` 엔드포인트는 `HTTPS GET`만 지원합니다. 사용자 풀 클라이언트는 일반적으로 시스템 브라우저를 통해 이 요청을 수행합니다. 브라우저는 일반적으로 Android의 Custom Chrome Tab 또는 iOS의 Safari View Control입니다.

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

*client\_id*  
앱에 대한 앱 클라이언트 ID입니다. 앱 클라이언트 ID를 얻으려면 해당 앱을 사용자 풀에 등록해야 합니다. 자세한 내용은 [앱 클라이언트를 사용한 애플리케이션별 설정](user-pool-settings-client-apps.md) 섹션을 참조하세요.  
필수 사항입니다.

*logout\_uri*  
*logout\_uri* 파라미터가 있는 사용자 지정 로그아웃 페이지로 사용자를 리디렉션합니다. 로그아웃한 사용자를 리디렉션하려는 앱 클라이언트 **로그아웃 URL**로 값을 설정합니다. *logout\_uri*는 *client\_id* 파라미터와 함께만 사용합니다. 자세한 내용은 [앱 클라이언트를 사용한 애플리케이션별 설정](user-pool-settings-client-apps.md) 단원을 참조하십시오.  
*logout\_uri* 파라미터를 사용하여 사용자를 다른 앱 클라이언트의 로그인 페이지로 리디렉션할 수도 있습니다. 다른 앱 클라이언트의 로그인 페이지를 앱 클라이언트의 **허용된 콜백 URL**로 설정합니다. `/logout` 엔드포인트에 대한 요청에서 *logout\_uri* 파라미터의 값을 URL 인코딩된 로그인 페이지로 설정합니다.  
Amazon Cognito에서는 `/logout` 엔드포인트를 요청할 때 *logout\_uri* 또는 *redirect\_uri* 파라미터가 필요합니다. *logout\_uri* 파라미터는 사용자를 다른 웹 사이트로 리디렉션합니다. *logout\_uri* 및 *redirect\_uri* 파라미터 모두가 `/logout` 엔드포인트에 대한 요청에 포함되어 있는 경우 Amazon Cognito는 *logout\_uri* 파라미터만 사용하여 *redirect\_uri* 파라미터를 재정의합니다.

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

**redirect\_uri**  
사용자를 로그인 페이지로 리디렉션하여 *redirect\_uri* 파라미터를 사용하여 인증합니다. 다시 로그인한 사용자를 리디렉션하려는 앱 클라이언트 **허용된 콜백 URL**로 값을 설정합니다. `/login` 엔드포인트에 전달하려는 *client\_id*, *scope*, *state*, *response\_type* 파라미터를 추가합니다.  
Amazon Cognito에서는 `/logout` 엔드포인트를 요청할 때 *logout\_uri* 또는 *redirect\_uri* 파라미터가 필요합니다. 사용자를 `/login` 엔드포인트로 리디렉션하여 토큰을 다시 인증하고 앱에 전달하려면 *redirect\_uri* 파라미터를 추가하세요. `/logout` 엔드포인트에 대한 요청에 *logout\_uri* 및 *redirect\_uri* 파라미터가 모두 포함된 경우 Amazon Cognito는 *redirect\_uri* 파라미터를 재정의하고 *logout\_uri* 파라미터만 단독으로 처리합니다.

*response\_type*  
사용자가 로그인한 후 Amazon Cognito로부터 수신할 OAuth 2.0 응답입니다. `code` 및 `token`은 *response\_type* 파라미터에 대한 유효한 값입니다.  
*redirect\_uri* 파라미터를 사용하는 경우 필수입니다.

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

*범위*  
*redirect\_uri* 파라미터를 사용하여 로그아웃한 후 Amazon Cognito로부터 요청할 OAuth 2.0 범위입니다. Amazon Cognito가 `/logout` 엔드포인트에 대한 요청에 *scope* 파라미터를 사용하여 사용자를 `/login` 엔드포인트로 리디렉션합니다.  
*redirect\_uri* 파라미터를 사용하는 경우에 선택 사항입니다. *scope* 파라미터를 포함하지 않는 경우 Amazon Cognito가 *scope* 파라미터를 사용하여 사용자를 `/login` 엔드포인트로 리디렉션합니다. Amazon Cognito가 사용자를 리디렉션하고 `scope`를 자동으로 채우는 경우 이 파라미터에 앱 클라이언트의 권한 부여된 모든 범위가 포함됩니다.

### 요청 예시
<a name="get-logout-request-sample"></a>

**예 – 로그아웃하고 클라이언트로 리디렉션**

요청에 `logout_uri` 및 `client_id`가 포함된 경우 Amazon Cognito는 다른 모든 요청 파라미터를 무시하고 사용자 세션을 `logout_uri`의 값에 속한 URL로 리디렉션합니다. 이 URL은 앱 클라이언트의 승인된 로그아웃 URL이어야 합니다.

다음은 로그아웃 및 `https://www.example.com/welcome` 리디렉션 요청의 예시입니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  client_id=1example23456789&
  logout_uri=https%3A%2F%2Fwww.example.com%2Fwelcome
```

**예 – 로그아웃하고 사용자에게 다른 사용자로 로그인하라는 메시지 표시**

요청에 `logout_uri`가 없지만 승인 엔드포인트에 올바른 형식의 요청을 구성하는 파라미터를 제공하는 경우 Amazon Cognito는 사용자를 관리형 로그인으로 리디렉션합니다. 로그아웃 엔드포인트는 원래 요청의 파라미터를 리디렉션 대상에 추가합니다.

로그아웃 요청에 추가하는 추가 파라미터는 [요청 파라미터](#get-logout-request-parameters)의 목록에 있어야 합니다. 예를 들어 로그아웃 엔드포인트는 `identity_provider` 또는 `idp_identifier` 파라미터를 사용한 자동 IdP 리디렉션을 지원하지 않습니다. 로그아웃 엔드포인트에 대한 요청의 파라미터 `redirect_uri`는 로그아웃 URL이 아니라 승인 엔드포인트로 전달하려는 로그인 후 URL입니다.

다음은 사용자를 로그아웃시키고, 로그인 페이지로 리디렉션하고, 로그인 후 `https://www.example.com`으로 인증 코드를 제공하는 요청의 예시입니다.

```
GET https://mydomain.auth.us-east-1.amazoncognito.com/logout?
  response_type=code&
  client_id=1example23456789&
  redirect_uri=https%3A%2F%2Fwww.example.com&
  state=example-state-value&
  nonce=example-nonce-value&
  scope=openid+profile+aws.cognito.signin.user.admin
```