

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

# 단일 로그아웃으로 SAML 사용자 로그아웃
<a name="cognito-user-pools-saml-idp-sign-out"></a>

Amazon Cognito는 SAML 2.0 [단일 로그아웃](http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0-cd-02.html#5.3.Single%20Logout%20Profile|outline)(SLO)을 지원합니다. SLO를 사용하면 애플리케이션이 사용자 풀에서 로그아웃할 때 SAML ID 제공업체(IdPs)에서 사용자를 로그아웃할 수 있습니다. 이렇게 하면 사용자가 애플리케이션에 다시 로그인하려는 경우 SAML IdP 로 인증해야 합니다. 그렇지 않으면 자격 증명을 제공할 필요 없이 애플리케이션으로 전달하는 IdP 또는 사용자 풀 브라우저 쿠키가 있을 수 있습니다.

**로그아웃 흐름**을 지원하도록 SAML IdP를 구성하면 Amazon Cognito는 서명된 SAML 로그아웃 요청을 사용하여 사용자를 IdP로 리디렉션합니다. Amazon Cognito는 IdP 메타데이터의 `SingleLogoutService` URL에서 리디렉션 위치를 결정합니다. Amazon Cognito는 사용자 풀 서명 인증서로 로그아웃 요청에 서명합니다.

![Amazon Cognito SAML 로그아웃의 인증 흐름도입니다. 사용자가 로그아웃을 요청하면 Amazon Cognito는 SAML 로그아웃 요청을 사용하여 제공업체로 리디렉션합니다.](http://docs.aws.amazon.com/ko_kr/cognito/latest/developerguide/images/scenario-authentication-saml-sign-out.png)


SAML 세션이 있는 사용자를 사용자 풀 `/logout` 엔드포인트로 연결하면 Amazon Cognito는 다음 요청을 사용하여 SAML 사용자를 IdP 메타데이터에 지정된 SLO 엔드포인트로 리디렉션합니다.

```
https://{{[SingleLogoutService endpoint]}}?
SAMLRequest={{[encoded SAML request]}}&
RelayState={{[RelayState]}}&
SigAlg=http://www.w3.org/2001/04/xmldsig-more#rsa-sha256&
Signature={{[User pool RSA signature]}}
```

그런 다음 사용자는 IdP에서 `LogoutResponse`를 사용하여 `saml2/logout` 엔드포인트로 돌아갑니다. IdP는 `HTTP POST` 요청으로 `LogoutResponse`를 전송해야 합니다. 그런 다음 Amazon Cognito는 초기 로그아웃 요청에서 리디렉션 대상으로 리디렉션합니다.

SAML 제공업체는 두 개 이상의 `AuthnStatement`가 포함된 `LogoutResponse`를 보낼 수 있습니다. 이 유형의 응답에서 첫 번째 `AuthnStatement`의 `sessionIndex`는 원래 사용자를 인증한 SAML 응답의 `sessionIndex`와 일치해야 합니다. `sessionIndex`가 다른 `AuthnStatement`에 있는 경우 Amazon Cognito는 세션을 인식하지 못하며 사용자는 로그아웃되지 않습니다.

------
#### [ AWS Management Console ]

**SAML 로그아웃을 구성하는 방법**

1. [사용자 풀 ](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html), [앱 클라이언트](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-configuring-app-integration.html) 및 SAML IdP를 생성합니다.

1. SAML ID 제공업체를 생성하거나 편집할 때 **ID 제공업체 정보**에서 **로그아웃 흐름 추가**라는 제목의 확인란을 선택합니다.

1. 사용자 풀의 **소셜 및 외부 제공업체** 메뉴에서 IdP를 선택하고 **서명 인증서**를 찾습니다.

1. **.crt로 다운로드**를 선택합니다.

1. SAML 단일 로그아웃 및 요청 서명을 지원하도록 SAML 제공업체를 구성하고 사용자 풀 서명 인증서를 업로드합니다. IdP는 사용자 풀 도메인의 `/saml2/logout`으로 리디렉션해야 합니다.

------
#### [ API/CLI ]

**SAML 로그아웃을 구성하는 방법**

[CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html) 또는 [UpdateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) API 요청의 `IDPSignout` 파라미터를 사용하여 단일 로그아웃을 구성합니다. 다음은 SAML 단일 로그아웃을 지원하는 IdP의 `ProviderDetails` 예시입니다.

```
"ProviderDetails": { 
      "MetadataURL" : "{{https://myidp.example.com/saml/metadata}}",
      "IDPSignout" : "{{true}}",,
      "RequestSigningAlgorithm" : "rsa-sha256",
      "EncryptedResponses" : "{{true}}",
      "IDPInit" : "{{true}}"
}
```

------