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

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

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

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

페더레이션 사용자가 처음으로 사용자 풀에 로그인하면 Amazon Cognito는 해당 사용자의 자격 증명에 연결된 로컬 프로필을 찾습니다. 연결된 프로필이 없는 경우 사용자 풀이 새 프로필을 생성합니다. 로컬 프로필을 생성하여 연동 사용자가 처음 로그인하기 전 언제든지 (AdminLinkProviderForUserAPI요청 시 계획된 사전 준비 작업 또는 실행 중) 에 연결할 수 있습니다. 사전 가입 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 페더레이션 서비스 (ADFS) 를 통해 앱에 로그인합니다. IT 관리자인 Carlos는 각 고객 도메인에 계정을 가지고 있습니다. IdP에 관계없이 Carlos가 로그인할 때마다 앱 관리자로 인식되기를 원합니다.

Amazon Cognito에 대한 카를로스의 msp_carlos@example.com email 주장에 SAML 대한 귀하의 ADFS IdPs 현재 카를로스 이메일 주소 사용자 풀에 Carlos 사용자 이름으로 사용자를 생성합니다. 다음 AWS Command Line Interface (AWS CLI) 명령은, 및 에서 Carlos의 ID를 연결합니다. IdPs ADFS1 ADFS2 ADFS3

참고

특정 속성 클레임을 기반으로 사용자를 연결할 수 있습니다. 이 기능은 및 에만 있습니다. 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명의 페더레이션 사용자를 각 사용자 프로필에 연결할 수 있습니다.

  • 요청의 ProviderAttributeName SourceUser 매개변수로 정의된 대로 최대 5개의 IdP 속성 클레임에서 각 IdP에 사용자를 연결할 수 있습니다. AdminLinkProviderForUser API 예를 들어 하나 이상의 사용자를 소스 속성인email, phone department given_namelocation, 및 에 연결한 경우 이 다섯 가지 속성 중 하나에 대해 추가 사용자만 연결할 수 있습니다.

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

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

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

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

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

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

추가 명령 구문 및 예제는 를 AdminLinkProviderForUser참조하십시오 AWS SDKs.