SAML 서명 및 암호화 - Amazon Cognito

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

SAML 서명 및 암호화

SAML 2.0 로그인은 인증 흐름에서 요청 및 응답의 전달자로서 애플리케이션의 사용자를 중심으로 구축됩니다. 사용자가 전송 중에 이러한 SAML 문서를 읽거나 수정하지 않도록 해야 할 수 있습니다. 이렇게 하려면 사용자 풀의 SAML 자격 증명 공급자(IdPs)에 SAML 서명 및 암호화를 추가합니다. SAML 서명을 사용하면 사용자 풀이 SAML 로그인 및 로그아웃 요청에 서명을 추가합니다. 사용자 풀 퍼블릭 키를 사용하면 IdP가 수정되지 않은 SAML 요청을 수신하고 있는지 확인할 수 있습니다. 그런 다음 IdP가 응답하고 사용자의 브라우저 세션에 SAML어설션을 전달하면 IdP는 사용자가 자신의 속성과 권한을 검사할 수 없도록 해당 응답을 암호화할 수 있습니다.

SAML 서명 및 암호화를 사용하면 사용자 풀 작업 중 모든 암호화 SAML 작업은 Amazon Cognito가 생성하는 키와 함께 user-pool-provided 서명 및 암호 텍스트를 생성해야 합니다. 현재 외부 키를 사용하여 요청에 서명하거나 암호화된 어설션을 수락하도록 사용자 풀을 구성할 수 없습니다.

참고

사용자 풀 인증서는 10년 동안 유효합니다. 연 1회 Amazon Cognito는 사용자 풀에 대한 새 서명 및 암호화 인증서를 생성합니다. Amazon Cognito는 서명 인증서를 요청할 때 최신 인증서를 반환하고 가장 최신 서명 인증서로 요청에 서명합니다. IdP는 만료되지 않은 모든 사용자 풀 암호화 인증서로 어SAML설션을 암호화할 수 있습니다. 이전 인증서는 전체 기간 동안 계속 유효하며 퍼블릭 키는 인증서 간에 변경되지 않습니다. 공급자 구성에서 인증서를 매년 업데이트하는 것이 가장 좋습니다.

IdP에서 암호화된 SAML 응답 수락

Amazon Cognito와 IdP는 사용자가 로그인하고 로그아웃할 때 SAML 응답에서 기밀성을 설정할 수 있습니다. Amazon Cognito는 사용자 풀에서 구성하는 각 외부 SAML 공급자에 퍼블릭-프라이빗 RSA 키 페어와 인증서를 할당합니다. 사용자 풀 SAML 공급자에 대한 응답 암호화를 활성화할 때는 암호화된 SAML 응답을 지원하는 IdP에 인증서를 업로드해야 합니다. SAML IdP에 대한 사용자 풀 연결은 IdP가 제공된 키로 모든 SAML어설션을 암호화하기 시작하기 전에는 작동하지 않습니다.

다음은 암호화된 SAML 로그인의 흐름에 대한 개요입니다.

  1. 사용자가 로그인을 시작하고 SAML IdP 를 선택합니다.

  2. 사용자 풀은 SAML 로그인 요청을 통해 사용자를 SAML IdP로 권한 부여 엔드포인트리디렉션합니다. 사용자 풀은 IdP 에 의한 무결성 확인을 가능하게 하는 서명과 함께 이 요청에 선택적으로 동반될 수 있습니다. SAML 요청에 서명하려면 사용자 풀이 서명 인증서의 퍼블릭 키로 서명한 요청을 수락하도록 IdP를 구성해야 합니다.

  3. SAML IdP는 사용자에 서명하고 SAML 응답을 생성합니다. IdP는 퍼블릭 키를 사용하여 응답을 암호화하고 사용자를 사용자 풀 /saml2/idpresponse 엔드포인트로 리디렉션합니다. IdP는 SAML2.0 사양에 정의된 대로 응답을 암호화해야 합니다. 자세한 내용은 Security Element <EncryptedAssertion> Assertion Markup Language() V2.0에 대한 의견 및 프로토콜을 참조하세요. OASIS SAML V2

  4. 사용자 풀은 프라이빗 키를 사용하여 SAML 응답의 암호 텍스트를 복호화하고 사용자의 서명을 수행합니다.

중요

사용자 풀에서 SAML IdP에 대한 응답 암호화를 활성화할 때 IdP는 공급자에 고유한 퍼블릭 키로 모든 응답을 암호화해야 합니다. Amazon Cognito는 암호화를 지원하도록 구성한 SAML 외부 IdP에서 암호화되지 않은 SAML 응답을 수락하지 않습니다.

사용자 풀의 모든 외부 SAML IdP는 응답 암호화를 지원할 수 있으며 각 IdP는 자체 키 페어를 수신합니다.

AWS Management Console
SAML 응답 암호화를 구성하려면
  1. 사용자 풀 , 앱 클라이언트 및 SAML IdP 를 생성합니다.

  2. SAML 자격 증명 공급자를 생성하거나 편집할 때 요청 서명 및 응답 암호화 에서 이 공급자의 암호화된 SAML어설션 필요 라는 제목의 확인란을 선택합니다.

  3. 사용자 풀의 로그인 환경 탭의 페더레이션 자격 증명 공급자 로그인 에서 SAML IdP를 선택하고 암호화 인증서 보기를 선택합니다.

  4. .crt로 다운로드를 선택하고 다운로드한 파일을 SAML IdP 에 제공합니다. 인증서의 키로 SAML 응답을 암호화하도록 SAMLIdP를 구성합니다.

API/CLI

SAML 응답 암호화를 구성하려면

CreateIdentityProvider 또는 UpdateIdentityProvider API 요청의 EncryptedResponses 파라미터를 사용하여 응답 암호화를 구성합니다. 다음은 요청 서명을 지원하는 IdPProviderDetails의 예입니다.

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

사용자 풀에서 암호화 인증서를 가져오려면 DescribeIdentityProvider API 요청을 하고 응답 파라미터 ActiveEncryptionCertificate 에서 값을 검색합니다ProviderDetails. 이 인증서를 저장하고 사용자 풀의 로그인 요청에 대한 암호화 인증서로 IdP에 제공합니다.

SAML 요청 서명

IdP에 대한 SAML 2.0 요청의 무결성을 입증하는 기능은 Amazon Cognito SP가 시작한 SAML 로그인의 보안 이점입니다. 도메인이 있는 각 사용자 풀은 사용자 풀 X.509 서명 인증서를 받습니다. 이 인증서의 퍼블릭 키를 사용하면 사용자 풀은 사용자가 SAMLIdP 선택할 때 사용자 풀이 생성하는 로그아웃 요청에 암호화 서명을 적용합니다. 필요에 따라 SAML 로그인 요청 에 로그인하도록 앱 클라이언트를 구성할 수 있습니다. SAML 요청에 서명하면 IdP는 요청 XML 메타데이터의 서명이 사용자가 제공한 사용자 풀 인증서의 퍼블릭 키와 일치하는지 확인할 수 있습니다.

AWS Management Console
SAML 요청 서명을 구성하려면
  1. 사용자 풀 , 앱 클라이언트 및 SAML IdP 를 생성합니다.

  2. SAML 자격 증명 공급자를 생성하거나 편집할 때 요청 서명 및 응답 암호화 에서 이 공급자에 SAML 대한 요청 서명 이라는 제목의 확인란을 선택합니다.

  3. 사용자 풀의 로그인 환경 탭의 페더레이션 자격 증명 공급자 로그인 에서 서명 인증서 보기를 선택합니다.

  4. .crt로 다운로드를 선택하고 다운로드한 파일을 SAML IdP 에 제공합니다. 수신 SAML 요청의 서명을 확인하도록 SAML IdP를 구성합니다.

API/CLI

SAML 요청 서명을 구성하려면

CreateIdentityProvider 또는 요청의 RequestSigningAlgorithm 파라미터를 사용하여 UpdateIdentityProvider API 요청 서명을 구성합니다. 다음은 요청 서명을 지원하는 IdPProviderDetails의 예입니다.

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