서로 다른 계정에 있는 Amazon Cognito 사용자 풀을 Amazon Cognito 자격 증명 풀과 통합해야 합니다.
간략한 설명
사용자가 애플리케이션에 로그인하면 Amazon Cognito가 로그인 정보를 확인합니다. 로그인에 성공하면 Amazon Cognito 사용자 풀이 세션을 생성하고 인증된 사용자에게 ID, 액세스 및 새로 고침 토큰을 반환합니다.
Amazon Cognito 자격 증명 풀은 인증되지 않은 게스트 사용자 및 지원되는 ID 제공업체(idP) 로부터 토큰을 받는 인증된 사용자에게 임시 AWS 보안 인증을 제공합니다. 이러한 AWS 보안 인증을 사용하면 애플리케이션이 AWS 서비스에 안전하게 액세스할 수 있습니다.
Amazon Cognito 사용자 풀을 다른 AWS 계정에 있는 Amazon Cognito 자격 증명 풀과 통합할 수 있습니다. 이 구성을 사용하면 사용자가 한 계정의 사용자 풀에서 인증됩니다. 그런 다음 사용자는 다른 계정의 자격 증명 풀에서 받은 임시 AWS 보안 인증을 사용하여 AWS 서비스에 액세스합니다.
해결 방법
다음 교차 계정 시나리오는 예시 구성입니다.
Amazon Cognito 사용자 풀은 미국 동부(버지니아 북부) AWS 리전의 계정 A에 있습니다. Amazon Cognito 자격 증명 풀은 아시아 태평양(뭄바이) 리전의 계정 B에 있습니다.
이 시나리오에서는 계정 A 사용자 풀을 사용하여 인증하는 사용자의 계정 B 자격 증명 풀에서 임시 보안 인증을 가져와야 합니다. 계정 A 사용자 풀을 계정 B 자격 증명 풀에 인증 공급자로 추가해야 합니다.
사용자 풀을 인증 공급자로 추가하려면 다음 단계를 따르세요.
1. 계정 A에서 새 Amazon Cognito 콘솔을 엽니다.
2. User Pools(사용자 풀)을 선택한 다음 목록에서 적절한 사용자 풀을 선택합니다.
3. User pool ID(사용자 풀 ID) 및 App client id(앱 클라이언트 ID)의 값을 복사하여 외부에 저장합니다.
인증 공급자로서의 사용자 풀 예시:
계정 A 사용자 풀
사용자 풀 ID: us-east-1_xxxxxxxxx
앱 클라이언트 ID: 79i7hhxxxxxxxx1d5iciiu7
4. 계정 B에서 새 Amazon Cognito 콘솔을 연 다음 Federated identities(페더레이션 자격 증명)를 선택합니다.
5. 자격 증명 풀 목록에서 적절한 자격 증명 풀을 선택합니다.
6. Edit identity pool(자격 증명 풀 편집)을 선택합니다. Edit identity pool(자격 증명 풀 편집) 페이지가 나타납니다.
7. 아래로 스크롤하여 Authentication providers(인증 공급자)를 선택하여 인증 공급자 옵션을 표시합니다.
8. User pool ID(사용자 풀 ID)에 이전에 복사한 사용자 풀 ID를 붙여넣습니다.
9. App client id(앱 클라이언트 id)에 이전에 복사한 앱 클라이언트 ID를 붙여넣습니다.
10. 변경 내용을 저장합니다.
UpdateIdentityPool API를 호출하여 사용자 풀을 인증 공급자로 추가합니다.
update-identity-pool 명령 예시:
aws cognito-identity update-identity-pool --identity-pool-id example_identity_pool_id --identity-pool-name example_identity_pool_name --no-allow-unauthenticated-identities --cognito-identity-providers ProviderName=cognito-idp.example_region.amazonaws.com/example_user_pool_id,ClientId=example_app_client_id,ServerSideTokenCheck=false --region example_region
update-identity-pool 명령에 대한 설명:
- example_identity_pool_id는 계정 B의 자격 증명 풀 ID에 해당합니다. 예: ap-south-1:12345678-abcd-abcd-abcd-1234567890ab.
- example_app_client_id는 계정 A의 클라이언트 ID를 나타냅니다. 예: 79i7hhxxxxxxxx1d5iciiu7.
- example_region은 자격 증명 풀의 리전을 나타냅니다. 예: ap-south-1.
- example_identity_pool_name은 자격 증명 풀 이름에 해당합니다. 예: test-pool.
- example_user_pool_id는 계정 A의 사용자 풀을 나타냅니다. 예: us-east-1_xxxxxxxxx.
중요: UpdateIdentityPool API는 자격 증명 풀의 기존 구성을 재설정하므로 DescribeIdentityPool API를 먼저 호출하세요. 그런 다음 기존의 모든 자격 증명 풀 파라미터를 UpdateIdentityPool API로 전송합니다.