사용자 풀에 SAML 자격 증명 공급자 추가 - Amazon Cognito

사용자 풀에 SAML 자격 증명 공급자 추가

Microsoft Active Directory Federation Services(ADFS) 또는 Shibboleth 같은 SAML ID 제공업체(idP)를 통해 웹 및 모바일 앱 사용자가 로그인하게 할 수 있습니다. SAML 2.0 표준을 지원하는 SAML IdP를 선택해야 합니다.

Amazon Cognito는 기본 제공 호스트된 웹 UI를 사용하여 모든 인증된 사용자에 대한 토큰 처리 및 관리 기능을 제공합니다. 이렇게 하면 백엔드 시스템을 한 세트의 사용자 풀 토큰에서 표준화할 수 있습니다. AWS Management Console에서 AWS CLI를 통해 또는 Amazon Cognito API 호출을 사용하여 SAML IdP를 생성하고 관리할 수 있습니다. 콘솔로 시작하려면 AWS Management Console을 사용하여 SAML 기반 자격 증명 공급자를 통해 사용자 풀에 로그인 추가를 참조하세요.


                소셜 로그인의 인증 개요
참고

서드 파티(페더레이션)를 통한 로그인을 Amazon Cognito 사용자 풀에서 사용할 수 있습니다. 이 기능은 Amazon Cognito 자격 증명 풀(페더레이션 자격 증명)을 통한 페더레이션과 무관합니다.

SAML IdP를 업데이트하고, 사용자 풀에서 해당 공급자를 지원하도록 구성해야 합니다. 사용자 풀을 SAML 2.0 IdP에 대한 신뢰 당사자 또는 애플리케이션으로 추가하는 방법에 대한 내용은 SAML IdP 설명서를 참조하세요.

Amazon Cognito와 SAML IdP는 relayState 파라미터를 사용하여 세션 정보를 유지 관리합니다.

relayState에 대해 알아야 할 사항

  1. Amazon Cognito는 80바이트보다 큰 relayState 값을 지원합니다. SAML 사양에는 relayState 값의 “길이가 80바이트를 초과해서는 안 된다”고 명시되어 있지만, 현재 업계 관행은 이 동작에서 벗어나는 경우가 많습니다. 결과적으로 80바이트보다 큰 relayState 값을 거부하면 많은 표준 SAML 공급자 통합이 중단됩니다.

  2. RelayState 토큰은 Amazon Cognito Cognito에서 유지 관리하는 상태 정보에 대한 불투명한 참조입니다. Amazon Cognito는 relayState 파라미터의 내용을 보장하지 않습니다. 앱이 결과에 따라 달라지도록 내용을 구문 분석하지 마세요. 자세한 내용은 SAML 2.0 사양을 참조하세요.

그리고 SAML 자격 증명 공급자에 어설션 소비자 엔드포인트를 제공해야 합니다. SAML ID 제공업체의 SAML 2.0 POST 바인딩에 대해 사용자 풀 도메인에서 다음 엔드포인트 구성합니다. 사용자 풀 도메인에 대한 자세한 정보는 사용자 풀 도메인 구성 단원을 참조하세요.

https://Your user pool domain/saml2/idpresponse With an Amazon Cognito domain: https://<yourDomainPrefix>.auth.<region>.amazoncognito.com/saml2/idpresponse With a custom domain: https://Your custom domain/saml2/idpresponse

도메인 접두사와 사용자 풀의 리전 값은 Amazon Cognito 콘솔도메인 이름(Domain name) 탭에서 확인할 수 있습니다.

참고

Amazon Cognito idpresponse 엔드포인트는 암호화된 SAML 어설션을 허용하지 않습니다.

일부 SAML IdP의 경우 SP urn/대상 URI/SP 엔터티 ID도 다음 형식으로 제공해야 합니다.

urn:amazon:cognito:sp:<yourUserPoolID>

사용자 풀 ID는 Amazon Cognito 콘솔일반 설정(General settings) 탭에서 확인할 수 있습니다.

또한 SAML IdP가 사용자 풀에 필요한 속성에 대한 속성 값을 제공하도록 구성해야 합니다. 예를 들어 email은 사용자 풀의 일반적인 필수 속성입니다. 따라서 SAML IdP는 SAML 어설션에 email 값(클레임)을 제공해야 합니다.

Amazon Cognito 사용자 풀은 사후 바인딩 엔드포인트와의 SAML 2.0 페더레이션을 지원합니다. 이렇게 하면 사용자 풀이 사용자 에이전트를 통해 IdP로부터 직접 SAML 응답을 받으므로 앱에서 SAML 어설션 응답을 검색하거나 구문 분석할 필요가 없습니다. 사용자 풀은 애플리케이션을 대신하여 서비스 공급자(SP) 역할을 합니다. Amazon Cognito는 SAML V2.0 기술 개요의 섹션 5.1.2에서 설명하듯이 SP가 개시하는 통합 인증(SSO)을 지원합니다.

Amazon Cognito SAML 요청

권한 부여 엔드포인트가 사용자를 IdP 로그인 페이지로 안내하면 Amazon Cognito는 사용자가 POST 본문으로 보내는 SAML 요청을 제공합니다. SAML 요청에는 사용자 풀 및 saml2/idpresponse 엔드포인트에 대한 정보가 포함됩니다. Amazon Cognito는 SAML 요청에 서명하지 않습니다.

Amazon Cognito는 사용자가 IdP의 로그아웃 엔드포인트로 전달하는 로그아웃 요청에 서명합니다. 이러한 로그아웃 요청에 대한 신뢰를 구축하기 위해 Amazon Cognito 콘솔 로그인 환경(Sign-in experience) 탭에서 다운로드한 사용자 풀 SAML 2.0 서명 인증서 사본을 IdP에 제공할 수 있습니다.