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

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

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

Amazon Cognito는 SAML 2.0 단일 로그아웃(SLO. SLO를 사용하면 애플리케이션에서 사용자 풀에서 로그아웃할 때 자격 SAML 증명 공급자(IdPs)에서 사용자를 로그아웃할 수 있습니다. 이렇게 하면 사용자가 애플리케이션에 다시 로그인하려는 경우 SAML IdP 로 인증해야 합니다. 그렇지 않으면 보안 인증 정보를 제공할 필요 없이 애플리케이션에 전달하는 IdP 또는 사용자 풀 브라우저 쿠키가 있을 수 있습니다.

로그아웃 흐름 을 지원하도록 SAML IdP를 구성하면 Amazon Cognito는 서명된 SAML 로그아웃 요청으로 사용자를 IdP 로 리디렉션합니다. Amazon Cognito는 IdP 메타데이터SingleLogoutServiceURL의 에서 리디렉션 위치를 결정합니다. 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 공급자가 둘 이상의 LogoutResponse 를 전송할 수 AuthnStatement 있습니다. 이 유형의 응답AuthnStatement에서 sessionIndex 첫 번째 의 는 원래 사용자를 인증한 SAML 응답sessionIndex에서 와 일치해야 합니다. sessionIndex 가 다른 에 있는 경우 AuthnStatement Amazon Cognito는 세션을 인식하지 못하며 사용자는 로그아웃되지 않습니다.

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

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

  3. 사용자 풀의 로그인 환경 탭의 페더레이션 자격 증명 공급자 로그인 에서 IdP를 선택하고 서명 인증서 를 찾습니다.

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

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

API/CLI

SAML 로그아웃을 구성하려면

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

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