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

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

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

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

페더레이션 사용자가 처음으로 사용자 풀에 로그인하면 Amazon Cognito는 해당 사용자의 자격 증명에 연결된 로컬 프로필을 찾습니다. 연결된 프로필이 없는 경우 사용자 풀이 새 프로필을 생성합니다. 로컬 프로필을 생성하여 페더레이션 사용자가 처음 로그인하기 전 언제든지 AdminLinkProviderForUser API 요청 또는 사전 가입 Lambda 트리거에서 페더레이션 사용자에게 연결할 수 있습니다. 사용자가 로그인하고 Amazon Cognito가 연결된 로컬 프로필을 감지하면 사용자 풀이 사용자의 클레임을 읽고 이를 IdP의 매핑 규칙과 비교합니다. 그런 다음 사용자 풀은 로그인에서 매핑된 클레임으로 연결된 로컬 프로필을 업데이트합니다. 이렇게 하면 액세스 클레임이 포함된 로컬 프로파일을 구성하고 공급자에 대한 ID 클레임을 up-to-date 유지할 수 있습니다. Amazon Cognito가 페더레이션 사용자를 연결된 프로필과 매칭하면 페더레이션 사용자는 항상 해당 프로필에 로그인하게 됩니다. 그런 다음 더 많은 사용자 제공업체 자격 증명을 동일한 프로필에 연결하여 각 고객에게 일관된 앱 경험을 제공할 수 있습니다. 이전에 로그인한 페더레이션 사용자를 연결하려면 먼저 기존 프로필을 삭제해야 합니다. [Provider name]_identifier 형식으로 기존 프로필을 식별할 수 있습니다. 예를 들어 LoginWithAmazon_amzn1.account.AFAEXAMPLE입니다. 생성한 후 타사 사용자 ID에 연결한 사용자는 생성 시 사용한 사용자 이름과 연결된 ID의 세부 정보가 포함된 identities 속성을 가집니다.

중요

외부 페더레이션 ID를 가진 사용자가 사용자 풀의 기존 사용자로 로그인할 수 있으므로 AdminLinkProviderForUser 응용 프로그램 소유자가 신뢰한 외부 IdPs 및 공급자 속성에만 사용하는 것이 중요합니다.

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

ADFS는 Amazon IdPs msp_carlos@example.com Cognito에 대한 카를로스의 SAML email 어설션을 청구할 때 카를로스의 이메일 주소를 제시합니다. 사용자 풀에 Carlos 사용자 이름으로 사용자를 생성합니다. 다음 AWS Command Line Interface (AWS CLI) 명령은 ADFS1, ADFS2 및 ADFS3 출신의 카를로스 ID를 연결합니다. IdPs

참고

특정 속성 클레임을 기반으로 사용자를 연결할 수 있습니다. 이 기능은 OIDC와 SAML에서만 사용할 수 있습니다. IdPs 다른 공급자 유형의 경우 고정된 소스 속성을 기반으로 연결해야 합니다. 자세한 내용은 을 참조하십시오. 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 클레임에 연결된 모든 공급자가 포함되어 있습니다.

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

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

프로필에 연결한 외부 사용자 계정을 사용자가 더 이상 사용하지 않는다는 사실을 알게 되면 해당 사용자 계정과 사용자 풀 사용자의 연결을 끊을 수 있습니다. 사용자를 연결할 때 요청에 사용자의 속성 이름, 속성 값 및 제공업체 이름을 제공했습니다. 사용자에게 더 이상 필요하지 않은 프로필을 삭제하려면 동등한 파라미터로 AdminDisableProviderForUserAPI 요청을 하세요.

AdminLinkProviderForUserAWSSDK의 추가 명령 구문 및 예제는 를 참조하십시오.