기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon Cognito 사용자 풀에서 SAML 세션 시작
Amazon Cognito는 서비스 제공업체 시작(SP 시작), Single Sign-On(SSO) 및 IdP 시작 SSO를 지원합니다. 가장 좋은 방법은 사용자 풀에서 SP 시작 SSO를 구현하는 것입니다. SAML V2.0 Technical Overview
일부 엔터프라이즈 사용 사례의 경우 내부 애플리케이션에 대한 액세스는 엔터프라이즈 IdP가 호스팅하는 대시보드의 북마크에서 시작됩니다. 사용자가 북마크를 선택하면 IdP가 SAML 응답을 생성하고 SP로 전송하여 해당 애플리케이션을 사용하여 사용자를 인증합니다.
IdP 시작 SSO를 지원하도록 사용자 풀에서 SAML IdP를 구성할 수 있습니다. IdP 시작 인증을 지원하는 경우 Amazon Cognito는 SAML 요청으로 인증을 시작하지 않기 때문에 Amazon Cognito는 수신한 SAML 응답을 요청했는지 확인할 수 없습니다. SP 시작 SSO에서 Amazon Cognito는 원본 요청에 대한 SAML 응답을 검증하는 상태 파라미터를 설정합니다. SP 시작 로그인을 사용하면 사이트 간 요청 위조(CSRF)로부터 보호할 수도 있습니다.
SP 시작 SAML 로그인 사용
가장 좋은 방법은 사용자 풀에 대한 서비스 제공업체 시작(SP 시작) 로그인을 구현하는 것입니다. Amazon Cognito는 사용자의 세션을 시작하고 이를 IdP 로 리디렉션합니다. 이 메서드를 사용하면 로그인 요청을 제시하는 사용자를 가장 잘 제어할 수 있습니다. 특정 조건에서 IdP가 시작한 로그인을 허용할 수도 있습니다.
다음 프로세스는 사용자가 SAML 제공업체를 통해 사용자 풀에 대한 SP 시작 로그인을 완료하는 방법을 보여줍니다.

-
사용자가 로그인 페이지에 이메일 주소를 입력합니다. 사용자의 IdP 리디렉션을 확인하려면 사용자 지정 빌드 애플리케이션에서 이메일 주소를 수집하거나 웹 보기에서 관리형 로그인을 호출할 수 있습니다. IdPs하거나 이메일 주소만 입력하도록 관리형 로그인 페이지를 구성할 수 있습니다.
-
앱은 사용자 풀 리디렉션 엔드포인트를 호출하고 앱에 해당하는 클라이언트 ID와 사용자에 해당하는 IdP ID로 세션을 요청합니다.
-
Amazon Cognito는
AuthnRequest
요소에서 선택적으로 서명된 SAML 요청과 함께 사용자를 IdP로 리디렉션합니다. -
IdP는 대화형으로 또는 브라우저 쿠키에서 기억된 세션으로 사용자를 인증합니다.
-
IdP는 POST 페이로드에서 선택적으로 암호화된 SAML 어설션을 사용하여 사용자를 사용자 풀 SAML 응답 엔드포인트로 리디렉션합니다.
참고
Amazon Cognito는 5분 이내에 응답을 받지 못하는 세션을 취소하고 사용자를 관리형 로그인으로 리디렉션합니다. 사용자에게 이 결과가 발생하면
Something went wrong
오류 메시지가 표시됩니다. -
Amazon Cognito는 SAML 어설션을 확인하고 응답의 클레임에서 사용자 속성을 매핑한 후 내부적으로 사용자 풀에서 사용자 프로필을 생성하거나 업데이트합니다. 일반적으로 사용자 풀은 사용자의 브라우저 세션에 권한 부여 코드를 반환합니다.
-
사용자가 앱에 인증 코드를 제시하면 앱은 코드를 JSON 웹 토큰(JWT)으로 교환합니다.
-
앱은 사용자의 ID 토큰을 인증으로 수락 및 처리하고, 액세스 토큰을 사용하여 리소스에 대한 승인된 요청을 생성하고, 새로 고침 토큰을 저장합니다.
사용자가 인증하고 권한 부여 코드를 부여 받으면 사용자 풀은 ID, 액세스 및 새로 고침 토큰을 반환합니다. ID 토큰은 OIDC 기반 ID 관리를 위한 인증 개체입니다. 액세스 토큰은 OAuth 2.0
새로 고침 토큰의 기간을 선택할 수도 있습니다. 사용자의 새로 고침 토큰이 만료되면 다시 로그인해야 합니다. SAML IdP를 통해 인증된 경우 사용자의 세션 기간은 IdP를 사용한 세션 만료가 아니라 토큰 만료로 설정됩니다. 앱은 각 사용자의 새로 고침 토큰을 저장하고 만료 시 세션을 갱신해야 합니다. 관리형 로그인은 1시간 동안 유효한 브라우저 쿠키의 사용자 세션을 유지합니다.
IdP 시작 SAML 로그인 사용
IdP 시작 SAML 2.0 로그인을 위해 ID 제공업체를 구성할 경우 권한 부여 엔드포인트에서 세션을 시작할 필요 없이 사용자 풀 도메인의 saml2/idpresponse
엔드포인트에 SAML 어설션을 제공할 수 있습니다. 이 구성의 사용자 풀은 요청된 앱 클라이언트가 지원하는 사용자 풀 외부 ID 제공업체로부터 IdP 시작 SAML 어설션을 수락합니다. 다음 단계에서는 IdP 시작 SAML 2.0 제공업체를 구성하고 로그인하는 전체 프로세스를 설명합니다.
-
사용자 풀 및 앱 클라이언트를 생성하거나 지정합니다.
-
사용자 풀에 SAML 2.0 IdP를 생성합니다.
-
IdP 시작을 지원하도록 IdP를 구성합니다. IdP 시작 SAML은 다른 SSO 제공업체에 적용되지 않는 보안 고려 사항을 도입합니다. 따라서 사용자 풀 자체를 포함하여 IdP 시작 로그인이 포함된 SAML 제공업체를 사용하는 앱 클라이언트에는 비SAML IdP 추가할 수 없습니다.
-
IdP 시작 SAML 제공업체를 사용자 풀의 앱 클라이언트와 연결합니다.
-
사용자를 SAML IdP의 로그인 페이지로 안내하고 SAML 어설션을 검색합니다.
-
SAML 어설션을 사용하여 사용자를 사용자 풀
saml2/idpresponse
엔드포인트로 안내합니다. -
JSON 웹 토큰(JWT)을 받습니다.
사용자 풀에서 원치 않는 SAML 어설션을 수락하려면 앱 보안에 미치는 영향을 고려해야 합니다. IdP에서 시작한 요청을 수락할 때 요청 스푸핑 및 CSRF 시도가 발생할 수 있습니다. 사용자 풀은 IdP에서 시작한 로그인 세션을 확인할 수 없지만 Amazon Cognito는 요청 파라미터와 SAML 어설션을 검증합니다.
또한 SAML 어설션에는 InResponseTo
클레임이 포함되어서는 안 되며 이전 6분 이내에 발급되었어야 합니다.
IdP가 시작한 SAML을 사용하여 요청을 사용자의 /saml2/idpresponse
에 제출해야 합니다. SP 시작 및 관리형 로그인 권한 부여 요청의 경우 요청된 앱 클라이언트, 범위, 리디렉션 URI 및 기타 세부 정보를 식별하는 파라미터를 HTTP GET
요청의 쿼리 문자열 파라미터로 제공해야 합니다. 그러나 IdP 시작 SAML 어설션의 경우 요청의 세부 정보는 HTTP POST
요청 본문의 RelayState
파라미터로 형식이 지정되어야 합니다. 요청 본문에 SAML 어설션도 SAMLResponse
파라미터로 포함되어야 합니다.
다음은 IdP가 시작한 SAML 제공업체에 대한 요청의 예시입니다.
POST /saml2/idpresponse HTTP/1.1 User-Agent:
USER_AGENT
Accept: */* Host:example.auth.us-east-1.amazoncognito.com
Content-Type: application/x-www-form-urlencoded SAMLResponse=[Base64-encoded SAML assertion]
&RelayState=identity_provider%3DMySAMLIdP
%26client_id%3D1example23456789
%26redirect_uri%3Dhttps%3A%2F%2Fwww.example.com
%26response_type%3Dcode
%26scope%3Demail%2Bopenid%2Bphone
HTTP/1.1 302 Found Date: Wed, 06 Dec 2023 00:15:29 GMT Content-Length: 0 x-amz-cognito-request-id: 8aba6eb5-fb54-4bc6-9368-c3878434f0fb Location:https://www.example.com
?code=[Authorization code]