단일 로그아웃으로 SAML 사용자 로그아웃 - Amazon Cognito

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

단일 로그아웃으로 SAML 사용자 로그아웃

Amazon Cognito는 SAML 2.0 단일 로그아웃(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 로그아웃 요청을 사용하여 제공업체로 리디렉션합니다.

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를 보낼 수 있습니다. 이 유형의 응답에서 첫 번째 AuthnStatementsessionIndex는 원래 사용자를 인증한 SAML 응답의 sessionIndex와 일치해야 합니다. sessionIndex가 다른 AuthnStatement에 있는 경우 Amazon Cognito는 세션을 인식하지 못하며 사용자는 로그아웃되지 않습니다.

AWS Management Console
SAML 로그아웃을 구성하는 방법
  1. 사용자 풀 , 앱 클라이언트 및 SAML IdP를 생성합니다.

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

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

  4. .crt로 다운로드를 선택합니다.

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

API/CLI

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

CreateIdentityProvider 또는 UpdateIdentityProvider API 요청의 IDPSignout 파라미터를 사용하여 단일 로그아웃을 구성합니다. 다음은 SAML 단일 로그아웃을 지원하는 IdP의 ProviderDetails 예시입니다.

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