기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
SAML 공급자를 자격 증명 풀 IdP로 설정
Amazon Cognito 자격 증명 풀을 사용하면 SAML 2.0을 통해 자격 증명 공급자(IdPs)로 사용자를 인증할 수 있습니다. Amazon CognitoSAML에서 지원하는 IdP를 사용하여 사용자에게 간단한 온보딩 흐름을 제공할 수 있습니다. SAML지원되는 IdP는 사용자가 수임할 수 있는 IAM 역할을 지정합니다. 이렇게 하면 사용자마다 서로 다른 권한 집합을 받을 수 있습니다.
SAML IdP에 대한 자격 증명 풀 구성
다음 단계에서는 SAML기반 IdP를 사용하도록 자격 증명 풀을 구성하는 방법을 설명합니다.
참고
SAML 공급자를 지원하도록 자격 증명 풀을 구성하기 전에 먼저 IAM 콘솔
SAML 자격 증명 공급자를 추가하려면(IdP )
-
Amazon Cognito 콘솔
에서 자격 증명 풀을 선택합니다. 자격 증명 풀을 선택합니다. -
사용자 액세스 탭을 선택합니다.
-
ID 제공업체 추가를 선택합니다.
-
를 선택합니다SAML.
-
의 에서 SAML 자격 증명 공급자IAM IdPs 를 선택합니다 AWS 계정. 새 SAML 공급자를 추가하려면 새 공급자 생성을 선택하여 IAM 콘솔로 이동합니다.
-
Amazon Cognito가 이 공급자를 통해 인증된 사용자에게 보안 인증을 발급할 때 요청하는 역할을 설정하려면 역할 설정을 구성하세요.
-
인증된 역할을 구성할 때 설정한 기본 역할을 이 IdP의 사용자에게 할당하거나 규칙을 사용하여 역할 선택을 선택할 수 있습니다.
-
규칙을 사용하여 역할 선택을 선택한 경우 사용자 인증의 소스 클레임, 클레임 비교 기준으로 사용할 운영자, 이 역할 선택과 일치하도록 하는 값, 역할 할당이 일치할 때 할당할 역할을 입력합니다. 다른 조건에 따라 추가 규칙을 생성하려면 다른 항목 추가를 선택합니다.
-
역할 해결을 선택합니다. 사용자의 클레임이 규칙과 일치하지 않는 경우 보안 인증을 거부하거나 인증된 역할의 보안 인증을 발급할 수 있습니다.
-
-
-
Amazon Cognito가 이 공급자를 통해 인증한 사용자에게 보안 인증을 발급할 때 할당하는 보안 주체 태그를 변경하려면 액세스 제어를 위한 속성을 구성합니다.
-
보안 주체 태그를 적용하지 않으려면 비활성을 선택합니다.
-
sub
및aud
클레임 기반 보안 주체 태그를 적용하려면 기본 매핑 사용을 선택합니다. -
보안 주체 태그에 대한 속성의 자체 사용자 지정 스키마를 생성하려면 사용자 지정 매핑 사용을 선택합니다. 그런 다음 태그에 표시하려는 각 클레임에서 소싱하려는 태그 키를 입력합니다.
-
-
변경 사항 저장(Save changes)을 선택합니다.
SAML IdP 구성
SAML 공급자를 생성한 후 SAML IdP와 간에 신뢰할 수 있는 당사자 신뢰를 추가하도록 IdP를 구성합니다 AWS. 많은 에서 IdP가 XML 문서에서 의존 당사자 정보 및 인증서를 읽는 데 사용할 수 URL 있는 를 지정할 IdPs수 있습니다. 의 경우 https://signin.aws.amazon.com/static/saml-metadata.xml을
IdP에 SAML 메타데이터에 서명 인증서가 두 SAML 개 이상 포함된 경우 로그인 시 사용자 풀에서 SAML 메타데이터의 인증서와 일치하는 경우 SAML어설션이 유효한 것으로 판단됩니다.
를 사용하여 사용자 역할 사용자 지정 SAML
Amazon Cognito Identity와 SAML 함께 를 사용하는 경우 최종 사용자의 역할을 사용자 지정할 수 있습니다. Amazon Cognito는 SAML기반 IdP 로 향상된 흐름만 지원합니다. SAML기반 IdP를 사용하기 위해 자격 증명 풀에 대해 인증 또는 인증되지 않은 역할을 지정할 필요가 없습니다. https://aws.amazon.com/SAML/Attributes/Role
클레임 속성은 쉼표로 구분된 역할 및 공급자 의 페어를 하나 이상 지정합니다ARN. 이는 사용자가 수임할 수 있는 역할입니다. SAML IdP 에서 사용 가능한 사용자 속성 정보를 기반으로 역할 속성을 채우도록 IdP를 구성할 수 있습니다. 어SAML설션에서 여러 역할을 받는 경우 를 호출할 때 선택적 customRoleArn
파라미터를 채웁니다getCredentialsForIdentity
. 역할이 SAML어설션의 클레임에 있는 것과 일치하는 customRoleArn
경우 사용자는 이를 가정합니다.
SAML IdP로 사용자 인증
SAML를 기반 IdP 와 페더레이션하려면 사용자가 login. AWS federation에서 IdP 시작 로그인을 사용하는 URL 를 결정합니다. AD FS 2.0에서 URL는 의 형태를 취합니다https://
.<fqdn>
/adfs/ls/IdpInitiatedSignOn.aspx?loginToRp=urn:amazon:webservices
Amazon Cognito 에서 SAML IdP에 대한 지원을 추가하려면 먼저 iOS 또는 Android 애플리케이션에서 자격 SAML 증명 공급자로 사용자를 인증합니다. SAML IdP와 통합하고 인증하는 데 사용하는 코드는 SAML 공급자에 따라 다릅니다. 사용자를 인증한 후 Amazon CognitoAPIs를 사용하여 Amazon Cognito Identity 에 결과 어SAML설션을 제공할 수 있습니다.
자격 증명 풀 API 요청의 Logins
맵에서 SAML어설션을 반복하거나 재생할 수 없습니다. 재생된 SAML어설션에는 이전 API 요청의 ID를 복제하는 어설션 ID가 있습니다. API Logins
맵에서 어SAML설션을 수락할 수 있는 작업에는 GetId, GetOpenIdToken, 및 GetCredentialsForIdentity가 포함됩니다GetOpenIDTokenForDeveloperIdentity. ID 풀 인증 흐름에서 API 요청당 어SAML설션 ID를 한 번 재생할 수 있습니다. 예를 들어 GetId
요청과 후속 GetCredentialsForIdentity
요청에서 동일한 어SAML설션을 제공할 수 있지만 두 번째 GetId
요청에서는 제공할 수 없습니다.
Android
Android 를 사용하는 경우 다음과 같이 어SAML설션으로 로그인 맵을 채울 SDK수 있습니다.
Map logins = new HashMap(); logins.put("arn:aws:iam::aws account id:saml-provider/name", "base64 encoded assertion response"); // Now this should be set to CognitoCachingCredentialsProvider object. CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider(context, identity pool id, region); credentialsProvider.setLogins(logins); // If SAML assertion contains multiple roles, resolve the role by setting the custom role credentialsProvider.setCustomRoleArn("arn:aws:iam::aws account id:role/customRoleName"); // This should trigger a call to the Amazon Cognito service to get the credentials. credentialsProvider.getCredentials();
iOS
iOS 를 사용하는 경우 다음과 AWSIdentityProviderManager
같이 에서 어SAML설션을 제공할 SDK수 있습니다.
- (AWSTask<NSDictionary<NSString*,NSString*> *> *) logins { //this is hardcoded for simplicity, normally you would asynchronously go to your SAML provider //get the assertion and return the logins map using a AWSTaskCompletionSource return [AWSTask taskWithResult:@{@"arn:aws:iam::aws account id:saml-provider/name":@"base64 encoded assertion response"}]; } // If SAML assertion contains multiple roles, resolve the role by setting the custom role. // Implementing this is optional if there is only one role. - (NSString *)customRoleArn { return @"arn:aws:iam::accountId:role/customRoleName"; }