로그인 후 자격 증명 풀을 AWS 서비스 사용하여 액세스 - Amazon Cognito

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

로그인 후 자격 증명 풀을 AWS 서비스 사용하여 액세스

사용자는 사용자 풀로 로그인한 후 자격 증명 풀에서 발급한 임시 API 자격 AWS 서비스 증명으로 액세스할 수 있습니다.

웹 또는 모바일 앱은 사용자 풀로부터 토큰을 받습니다. 사용자 풀을 자격 증명 풀의 ID 공급자로 구성하면 자격 증명 풀이 토큰을 임시 AWS 자격 증명으로 교환합니다. 이러한 자격 증명의 범위는 제한된 리소스 세트에 대한 액세스를 사용자에게 부여하는 IAM 역할 및 해당 정책으로 제한될 수 있습니다. AWS 자세한 정보는 자격 증명 풀(페더레이션 자격 증명) 인증 흐름을 참조하세요.

다음 다이어그램은 애플리케이션이 사용자 풀로 로그인하고, 자격 증명 풀 자격 증명을 검색하고, 에서 자산을 요청하는 방법을 보여줍니다. AWS 서비스

Amazon Cognito 사용자 풀로 인증하고 자격 증명 풀을 통해 리소스에 대한 액세스를 AWS 승인하는 애플리케이션의 흐름도.

자격 증명 풀 자격 증명을 사용하여 다음을 수행할 수 있습니다.

  • 사용자의 자격 증명을 사용하여 Amazon Verified Permissions에 세분화된 권한 부여 요청을 하십시오.

  • IAM과의 연결을 승인하는 Amazon API Gateway REST API AWS AppSync 또는 GraphQL API에 연결합니다.

  • IAM과의 연결을 승인하는 Amazon DynamoDB 또는 Amazon RDS와 같은 데이터베이스 백엔드에 연결합니다.

  • Amazon S3 버킷에서 애플리케이션 자산을 검색합니다.

  • Amazon WorkSpaces 가상 데스크톱으로 세션을 시작합니다.

자격 증명 풀은 사용자 풀을 사용한 인증된 세션 내에서만 독점적으로 작동하지 않습니다. 또한 타사 ID 공급자로부터 직접 인증을 수락하고 인증되지 않은 게스트 사용자에 대한 자격 증명을 생성할 수 있습니다.

자격 증명 풀을 사용자 풀 그룹과 함께 사용하여 AWS 리소스에 대한 액세스를 제어하는 방법에 대한 자세한 내용은 및 을 참조하십시오사용자 풀에 그룹 추가. 역할 기반 액세스 제어 사용 또한 ID 풀에 대한 자세한 내용은 및 AWS Identity and Access Management을 참조하십시오자격 증명 풀 개념.

를 사용하여 사용자 풀을 설정합니다. AWS Management Console

Amazon Cognito 사용자 풀을 생성하고 사용자 풀 ID와 각 클라이언트 앱의 앱 클라이언트 ID를 기록해 둡니다. 사용자 풀 생성에 대한 자세한 내용은 사용자 풀 시작하기 섹션을 참조하세요.

를 사용하여 자격 증명 풀을 설정합니다. AWS Management Console

다음 절차는 를 사용하여 자격 증명 풀을 하나 이상의 사용자 풀 및 클라이언트 앱과 통합하는 방법을 설명합니다. AWS Management Console

Amazon Cognito 사용자 풀 ID 제공업체(idP)를 추가하려면
  1. Amazon Cognito 콘솔에서 자격 증명 풀을 선택합니다. 자격 증명 풀을 선택합니다.

  2. 사용자 액세스 탭을 선택합니다.

  3. ID 제공업체 추가를 선택합니다.

  4. Amazon Cognito 사용자 풀을 선택합니다.

  5. 사용자 풀 ID앱 클라이언트 ID를 입력합니다.

  6. Amazon Cognito가 이 공급자를 통해 인증된 사용자에게 보안 인증을 발급할 때 요청하는 역할을 설정하려면 역할 설정을 구성하세요.

    1. 인증된 역할을 구성할 때 설정한 기본 역할을 해당 IdP의 사용자에게 제공하거나 규칙을 사용하여 역할을 선택할 수 있습니다. Amazon Cognito 사용자 풀 IdP를 사용하면 토큰에서 preferred_role 클레임을 포함한 역할을 선택할 수도 있습니다. cognito:preferred_role 클레임에 대한 자세한 내용은 그룹에 우선 순위 값 할당을 참조하세요.

      1. 규칙이 포함된 역할 선택을 선택한 경우 사용자 인증의 소스 클레임, 클레임을 규칙과 비교하는 데 사용할 운영자, 이 역할 선택과 일치하도록 하는 , 역할 할당이 일치할 때 할당하려는 역할을 입력합니다. 다른 조건에 따라 추가 규칙을 생성하려면 다른 항목 추가를 선택합니다.

      2. 토큰에서 preferred_role 클레임을 포함하는 역할 선택을 선택한 경우 Amazon Cognito는 사용자 클레임에서 해당 역할에 대한 자격 증명을 발급합니다. cognito:preferred_role 기본 역할 클레임이 없는 경우 Amazon Cognito는 역할 해결을 기반으로 보안 인증 정보를 발급합니다.

    2. 역할 해결을 선택합니다. 사용자의 클레임이 규칙과 일치하지 않는 경우 보안 인증을 거부하거나 인증된 역할의 보안 인증을 발급할 수 있습니다.

  7. Amazon Cognito가 이 공급자를 통해 인증한 사용자에게 보안 인증을 발급할 때 할당하는 보안 주체 태그를 변경하려면 액세스 제어를 위한 속성을 구성합니다.

    • 보안 주체 태그를 적용하지 않으려면 비활성을 선택합니다.

    • sub 및 aud 클레임 기반 보안 주체 태그를 적용하려면 기본 매핑 사용을 선택합니다.

    • 보안 주체 태그에 대한 속성의 자체 사용자 지정 스키마를 생성하려면 사용자 지정 매핑 사용을 선택합니다. 그런 다음 태그에 표시하려는 각 클레임에서 소싱하려는 태그 키를 입력합니다.

  8. 변경 사항 저장(Save changes)을 선택합니다.

자격 증명 풀과 사용자 풀 통합

앱 사용자가 인증되면 자격 증명 공급자의 로그인 맵에 해당 사용자의 자격 증명 토큰을 추가합니다. 공급자 이름은 Amazon Cognito 사용자 풀 ID에 따라 다릅니다. 공급자 이름은 다음과 같은 구조를 갖습니다.

cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>

사용자 풀 ID에서 의 값을 도출할 수 있습니다. <region> 예를 들어, 사용자 풀 ID가 us-east-1_EXAMPLE1 이면 <region>입니다us-east-1. 사용자 풀 ID가 us-west-2_EXAMPLE2 이면 <region>입니다us-west-2.

JavaScript
var cognitoUser = userPool.getCurrentUser(); if (cognitoUser != null) { cognitoUser.getSession(function(err, result) { if (result) { console.log('You are now logged in.'); // Add the User's Id Token to the Cognito credentials login map. AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'YOUR_IDENTITY_POOL_ID', Logins: { 'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>': result.getIdToken().getJwtToken() } }); } }); }
Android
cognitoUser.getSessionInBackground(new AuthenticationHandler() { @Override public void onSuccess(CognitoUserSession session) { String idToken = session.getIdToken().getJWTToken(); Map<String, String> logins = new HashMap<String, String>(); logins.put("cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>", session.getIdToken().getJWTToken()); credentialsProvider.setLogins(logins); } });
iOS - objective-C
AWSServiceConfiguration *serviceConfiguration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:nil]; AWSCognitoIdentityUserPoolConfiguration *userPoolConfiguration = [[AWSCognitoIdentityUserPoolConfiguration alloc] initWithClientId:@"YOUR_CLIENT_ID" clientSecret:@"YOUR_CLIENT_SECRET" poolId:@"YOUR_USER_POOL_ID"]; [AWSCognitoIdentityUserPool registerCognitoIdentityUserPoolWithConfiguration:serviceConfiguration userPoolConfiguration:userPoolConfiguration forKey:@"UserPool"]; AWSCognitoIdentityUserPool *pool = [AWSCognitoIdentityUserPool CognitoIdentityUserPoolForKey:@"UserPool"]; AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"YOUR_IDENTITY_POOL_ID" identityProviderManager:pool];
iOS - swift
let serviceConfiguration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: nil) let userPoolConfiguration = AWSCognitoIdentityUserPoolConfiguration(clientId: "YOUR_CLIENT_ID", clientSecret: "YOUR_CLIENT_SECRET", poolId: "YOUR_USER_POOL_ID") AWSCognitoIdentityUserPool.registerCognitoIdentityUserPoolWithConfiguration(serviceConfiguration, userPoolConfiguration: userPoolConfiguration, forKey: "UserPool") let pool = AWSCognitoIdentityUserPool(forKey: "UserPool") let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "YOUR_IDENTITY_POOL_ID", identityProviderManager:pool)