페더레이션 사용자를 기존 사용자 프로필에 연결 - Amazon Cognito

페더레이션 사용자를 기존 사용자 프로필에 연결

동일한 사용자에게 사용자 풀에 연결한 아이덴티티 제공업체(IdP)가 여러 개인 프로필이 있는 경우가 많습니다. Amazon Cognito는 사용자의 각 발생을 디렉터리에 있는 동일한 사용자 프로필에 연결할 수 있습니다. 이렇게 하면 여러 IdP 사용자를 보유한 한 사람이 앱에서 일관된 경험을 할 수 있습니다. AdminLinkProviderForUser는 Amazon Cognito에 페더레이션 디렉터리에 있는 사용자의 고유 ID를 사용자 풀의 사용자로 인식하도록 지시합니다. 사용자 프로필과 연결된 페더레이션 ID가 0개 이상인 경우 사용자 풀의 사용자는 청구 목적으로 1명의 월별 활성 사용자(MAU)로 계산됩니다.

페더레이션 사용자가 사용자 풀에 로그인하면 Amazon Cognito는 IdP 이름이 접두사로 붙는 적시 사용자 프로필을 생성합니다. 사용자 풀에서 사용자를 검색하면 연결된 로컬 사용자와 자동으로 생성된 페더레이션 사용자를 모두 찾을 수 있습니다. 관련 토큰에서 링크된 사용자의 자격 증명 클레임은 해당 사용자의 페더레이션 프로필에서 가져옵니다. 액세스 클레임은 로컬 프로필에서 가져옵니다.

중요

AdminLinkProviderForUser에서는 외부 페더레이션 ID를 가진 사용자가 사용자 풀에 기존 사용자로 로그인할 수 있도록 허용하므로, 애플리케이션 소유자가 신뢰하는 외부 IdP 및 공급자 속성으로만 사용해야 합니다.

예를 들어, 여러 고객과 공유하는 앱을 사용하는 관리형 서비스 제공업체(MSP)라고 가정해 봅니다. 각 고객은 Active Directory Federation Services(ADFS)를 통해 앱에 로그인합니다. IT 관리자인 Carlos는 각 고객 도메인에 계정을 가지고 있습니다. IdP에 관계없이 Carlos가 로그인할 때마다 앱 관리자로 인식되기를 원합니다.

ADFS IdP는 Carlos의 SAML 어설션에 대한 email 클레임에 있는 Carlos의 이메일 주소 msp_carlos@example.com을 Amazon Cognito에 제시합니다. 사용자 풀에 Carlos 사용자 이름으로 사용자를 생성합니다. 다음 AWS Command Line Interface(AWS CLI) 명령은 IdP ADFS1, ADFS2, ADFS3에서 Carlos의 ID를 연결합니다.

참고

특정 속성 클레임을 기반으로 사용자를 연결할 수 있습니다. 이 기능은 OIDC 및 SAML IdP에 고유합니다. 다른 공급자 유형의 경우 고정된 소스 속성을 기반으로 연결해야 합니다. 자세한 내용은 AdminLinkProviderForUser를 참조하세요. 소셜 IdP를 사용자 프로필에 연결할 때 ProviderAttributeNameCognito_Subject로 설정해야 합니다. ProviderAttributeValue는 IdP와 함께 사용자의 고유 식별자여야 합니다.

aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS1,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS2,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com aws cognito-idp admin-link-provider-for-user \ --user-pool-id us-east-1_EXAMPLE \ --destination-user ProviderAttributeValue=Carlos,ProviderName=Cognito \ --source-user ProviderName=ADFS3,ProviderAttributeName=email,ProviderAttributeValue=msp_carlos@example.com

이제 사용자 풀의 Carlos 사용자 프로필에 다음 identities 속성이 있습니다.

[{ "userId": "msp_carlos@example.com", "providerName": "ADFS1", "providerType": "SAML", "issuer": "http://auth.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS2", "providerType": "SAML", "issuer": "http://auth2.example.com", "primary": false, "dateCreated": 111111111111111 }, { "userId": "msp_carlos@example.com", "providerName": "ADFS3", "providerType": "SAML", "issuer": "http://auth3.example.com", "primary": false, "dateCreated": 111111111111111 }]
페더레이션 사용자 연결에 대해 알아야 할 사항
  • 최대 5명의 페더레이션 사용자를 각 사용자 프로필에 연결할 수 있습니다.

  • 페더레이션 사용자를 기존 페더레이션 사용자 프로필이나 로컬 사용자에 연결할 수 있습니다.

  • AWS Management Console의 사용자 프로필에 공급자를 연결할 수 없습니다.

  • 사용자의 ID 토큰에는 identities 클레임에 연결된 모든 공급자가 포함되어 있습니다.

  • AdminSetUserPassword API 요청에서 자동으로 생성된 페더레이션 사용자 프로필의 암호를 설정할 수 있습니다. 그러면 해당 사용자의 상태가 EXTERNAL_PROVIDER에서 CONFIRMED로 변경됩니다. 이 상태의 사용자는 페더레이션 사용자로 로그인할 수 있으며, 연결된 로컬 사용자처럼 API에서 인증 흐름을 시작할 수 있습니다. 또한 ChangePasswordUpdateUserAttribute와 같은 토큰 인증 API 요청에서 암호와 속성을 수정할 수 있습니다. 보안을 유지하고 사용자를 외부 IdP와 동기화된 상태를 유지하기 위해 페더레이션 사용자에서 암호를 설정하지 않는 것이 좋습니다. 대신 AdminLinkProviderForUser를 사용하여 사용자를 로컬 프로필에 연결하세요.

  • Amazon Cognito는 사용자가 IdP를 통해 로그인할 때 연결된 로컬 사용자 프로필에 사용자 속성을 채웁니다. Amazon Cognito는 OIDC IdP의 ID 토큰에 있는 자격 증명 클레임을 처리하고, OAuth 2.0 및 OIDC 공급자의 userInfo 엔드포인트도 확인합니다. Amazon Cognito는 userInfo의 정보보다 ID 토큰에 있는 정보를 우선시합니다.

AWS SDK의 예 및 추가 명령 구문은 AdminLinkProviderForUser를 참조하세요.