자격 증명 받기 - Amazon Cognito

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

자격 증명 받기

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. 이 단원에서는 자격 증명을 가져오는 방법과 자격 증명 풀에서 Amazon Cognito 자격 증명을 가져오는 방법을 설명합니다.

Amazon Cognito는 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 미인증 사용자는 자격 증명이 인증되지 않았으므로 앱 혹은 자격 증명의 인증이 중요하지 않은 경우 게스트 사용자 역할에 적합합니다. 인증받은 사용자는 타사 자격 증명 공급자(IdP)를 통해, 또는 자격 증명을 인증받은 사용자 풀을 통해 애플리케이션에 로그인합니다. 미인증 사용자의 액세스 권한을 허용하지 않도록 리소스 권한 범위를 충분히 정했는지 확인하십시오.

Amazon Cognito ID는 자격 증명이 아닙니다. AWS Security Token Service(AWS STS)에서 웹 자격 증명 연동 지원을 사용하여 자격 증명으로 교환되는 것입니다. 앱 사용자를 위해 AWS 자격 증명을 얻는 권장 방법은 AWS.CognitoIdentityCredentials를 사용하는 것입니다. 그러면 자격 증명 객체의 ID가 AWS STS를 사용하여 자격 증명용으로 교환됩니다.

참고

2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 AWS.CognitoIdentityCredentials 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 선택합니다. 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정하고 변경 사항을 저장하십시오.

Android

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. Amazon Cognito는 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 앱에 AWS 자격 증명을 제공하려면 아래의 단계를 수행하십시오.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 생성한 다음, 시작 코드 조각을 복사합니다.

  2. 아직 Android용 AWS Mobile SDK를 프로젝트에 추가하지 않았다면 지금 추가합니다. 자세한 내용은 Android용 Mobile SDK 설정을 참조하십시오.

  3. 다음 import 문을 포함합니다.

    import com.amazonaws.auth.CognitoCachingCredentialsProvider; import com.amazonaws.regions.Regions;
  4. Amazon Cognito 콘솔에서 생성된 코드 조각을 사용하여 Amazon Cognito 자격 증명 공급자를 초기화합니다. IDENTITY_POOL_ID 값은 계정에 따라 다릅니다.

    CognitoCachingCredentialsProvider credentialsProvider = new CognitoCachingCredentialsProvider( getApplicationContext(), // Context "IDENTITY_POOL_ID", // Identity Pool ID Regions.US_EAST_1 // Region );
  5. 초기화된 Amazon Cognito 자격 증명 공급자를 사용할 AWS 클라이언트 생성자에 전달합니다. 필요한 코드는 초기화할 서비스에 따라 다릅니다. 클라이언트가 이 공급자를 사용하여 AWS 리소스에 액세스할 수 있는 자격 증명을 가져옵니다.

    참고

    2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 이 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 연동 자격 증명 관리를 선택하고, 자격 증명 풀을 선택합니다. 그리고 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정하고 변경 사항을 저장하십시오.

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 최종 사용자의 고유한 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다. 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후 자격 증명 ID를 검색할 수 있습니다.

String identityId = credentialsProvider.getIdentityId(); Log.d("LogTag", "my ID is " + identityId);
참고

애플리케이션의 기본 스레드에서 getIdentityId(), refresh() 또는 getCredentials()를 호출하지 마십시오. Android 3.0(API 레벨 11)을 기준으로 기본 애플리케이션 스레드에서 네트워크 I/O를 수행하는 경우 앱이 자동으로 실패하고 NetworkOnMainThreadException이 발생합니다. AsyncTask를 사용하여 코드를 백그라운드 스레드로 이동해야 합니다. 자세한 내용은 Android 설명서를 참조하십시오. 이미 로컬에 캐시된 경우에만 getCachedIdentityId()를 호출하여 ID를 검색할 수 있습니다. 그렇지 않으면 메서드가 null을 반환합니다.

iOS - Objective-C

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. Amazon Cognito 자격 증명 풀은 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 앱에 AWS 자격 증명을 제공하려면 아래의 단계를 수행하십시오.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 생성한 다음, 시작 코드 조각을 복사합니다.

  2. 아직 AWS Mobile SDK for iOS를 프로젝트에 추가하지 않았다면 지금 추가합니다. 자세한 내용은 Mobile SDK for iOS 설정을 참조하십시오.

  3. 소스 코드에 AWSCore 헤더를 포함합니다.

    #import <AWSCore/AWSCore.h>
  4. Amazon Cognito 콘솔에서 생성된 코드 조각을 사용하여 Amazon Cognito 자격 증명 공급자를 초기화합니다. IDENTITY_POOL_ID 값은 계정에 따라 다릅니다.

    AWSCognitoCredentialsProvider *credentialsProvider = [[AWSCognitoCredentialsProvider alloc] initWithRegionType:AWSRegionUSEast1 identityPoolId:@"IDENTITY_POOL_ID"]; AWSServiceConfiguration *configuration = [[AWSServiceConfiguration alloc] initWithRegion:AWSRegionUSEast1 credentialsProvider:credentialsProvider]; AWSServiceManager.defaultServiceManager.defaultServiceConfiguration = configuration;
    참고

    2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 이 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 선택합니다. 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정하고 변경 사항을 저장하십시오.

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 또는 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후에 최종 사용자의 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다.

// Retrieve your Amazon Cognito ID [[credentialsProvider getIdentityId] continueWithBlock:^id(AWSTask *task) { if (task.error) { NSLog(@"Error: %@", task.error); } else { // the task result will contain the identity id NSString *cognitoId = task.result; } return nil; }];
참고

getIdentityId는 비동기식 호출입니다. 자격 증명 ID가 이미 공급자에 설정된 경우 credentialsProvider.identityId를 호출하여 해당 자격 증명을 검색할 수 있으며 이 자격 증명은 로컬에 캐시됩니다. 그러나 자격 증명 ID가 공급자에 설정되지 않은 경우 credentialsProvider.identityId를 호출하면 nil이 반환됩니다. 자세한 내용은 Mobile SDK for iOS API 참조를 참조하십시오.

iOS - Swift

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. Amazon Cognito는 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 앱에 AWS 자격 증명을 제공하려면 아래의 단계를 수행하십시오.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 생성한 다음, 시작 코드 조각을 복사합니다.

  2. 아직 Mobile SDK for iOS를 프로젝트에 추가하지 않았다면 지금 추가합니다. 자세한 내용은 SDK for iOS 설정을 참조하십시오.

  3. 소스 코드에 AWSCore 헤더를 포함합니다.

    import AWSCore
  4. Amazon Cognito 콘솔에서 생성된 코드 조각을 사용하여 Amazon Cognito 자격 증명 공급자를 초기화합니다. IDENTITY_POOL_ID 값은 계정에 따라 다릅니다.

    let credentialsProvider = AWSCognitoCredentialsProvider(regionType: .USEast1, identityPoolId: "IDENTITY_POOL_ID") let configuration = AWSServiceConfiguration(region: .USEast1, credentialsProvider: credentialsProvider) AWSServiceManager.default().defaultServiceConfiguration = configuration
    참고

    2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 이 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 선택합니다. 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정하고 변경 사항을 저장하십시오.

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 또는 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후에 최종 사용자의 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다.

// Retrieve your Amazon Cognito ID credentialsProvider.getIdentityId().continueWith(block: { (task) -> AnyObject? in if (task.error != nil) { print("Error: " + task.error!.localizedDescription) } else { // the task result will contain the identity id let cognitoId = task.result! print("Cognito id: \(cognitoId)") } return task; })
참고

getIdentityId는 비동기식 호출입니다. 자격 증명 ID가 이미 공급자에 설정된 경우 credentialsProvider.identityId를 호출하여 해당 자격 증명을 검색할 수 있으며 이 자격 증명은 로컬에 캐시됩니다. 그러나 자격 증명 ID가 공급자에 설정되지 않은 경우 credentialsProvider.identityId를 호출하면 nil이 반환됩니다. 자세한 내용은 Mobile SDK for iOS API 참조를 참조하십시오.

JavaScript

아직 생성하지 않은 경우 AWS.CognitoIdentityCredentials 사용 전에 Amazon Cognito 콘솔에서 자격 증명 풀을 생성하십시오.

자격 증명 제공자로 자격 증명 풀을 구성한 후에는 AWS.CognitoIdentityCredentials를 사용하여 사용자를 인증할 수 있습니다. AWS.CognitoIdentityCredentials를 사용하도록 애플리케이션 자격 증명을 구성하려면, credentials 또는 서비스당 구성의 AWS.Config 속성을 설정하십시오. 다음 예에는 AWS.Config가 사용됩니다.

// Set the region where your identity pool exists (us-east-1, eu-west-1) AWS.config.region = 'us-east-1'; // Configure the credentials provider to use your identity pool AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'IDENTITY_POOL_ID', Logins: { // optional tokens, used for authenticated login 'graph.facebook.com': 'FBTOKEN', 'www.amazon.com': 'AMAZONTOKEN', 'accounts.google.com': 'GOOGLETOKEN', 'appleid.apple.com': 'APPLETOKEN' } }); // Make the call to obtain credentials AWS.config.credentials.get(function(){ // Credentials will be available when this function is called. var accessKeyId = AWS.config.credentials.accessKeyId; var secretAccessKey = AWS.config.credentials.secretAccessKey; var sessionToken = AWS.config.credentials.sessionToken; });

선택 사항인 Logins 속성은 공급자의 자격 증명 토큰에 대한 자격 증명 공급자 이름의 맵입니다. 자격 증명 공급자에게서 토큰을 받는 방법은 어떤 공급자를 사용하느냐에 따라 다릅니다. 예를 들어 Facebook이 자격 증명 공급자 중 하나인 경우 Facebook SDK에서 FB.login 함수를 사용하여 자격 증명 공급자 토큰을 얻는 것입니다.

FB.login(function (response) { if (response.authResponse) { // logged in AWS.config.credentials = new AWS.CognitoIdentityCredentials({ IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030', Logins: { 'graph.facebook.com': response.authResponse.accessToken } }); console.log('You are now logged in.'); } else { console.log('There was a problem logging you in.'); } });

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 또는 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후에 최종 사용자의 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다.

var identityId = AWS.config.credentials.identityId;

Unity

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. Amazon Cognito는 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 앱에 AWS 자격 증명을 제공하려면 아래의 단계를 수행하십시오.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 생성한 다음, 시작 코드 조각을 복사합니다.

  2. 아직 AWS Mobile SDK for Unity 패키지를 다운로드하지 않았다면 다운로드 후 프로젝트로 가져옵니다. Assets> Import Package> Custom Package 메뉴에서 수행할 수 있습니다.

  3. Amazon Cognito를 호출할 스크립트에 콘솔의 시작 코드 조각을 붙여 넣습니다. IDENTITY_POOL_ID 값은 계정에 따라 다릅니다.

    CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito Identity Pool ID RegionEndpoint.USEast1 // Region );
  4. 초기화된 Amazon Cognito 자격 증명을 사용할 AWS 클라이언트 생성자에 전달합니다. 필요한 코드는 초기화할 서비스에 따라 다릅니다. 클라이언트가 이 공급자를 사용하여 AWS 리소스에 액세스할 수 있는 자격 증명을 가져옵니다.

    참고

    2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 이 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 선택합니다. 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정하고 변경 사항을 저장하십시오.

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 또는 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후에 최종 사용자의 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다.

credentials.GetIdentityIdAsync(delegate(AmazonCognitoIdentityResult<string> result) { if (result.Exception != null) { //Exception! } string identityId = result.Response; });

Xamarin

Amazon Cognito를 사용하여 애플리케이션에 권한이 제한된 임시 자격 증명을 전달하면 사용자가 AWS 리소스에 액세스할 수 있습니다. Amazon Cognito는 인증된 자격 증명과 인증되지 않은 자격 증명을 모두 지원합니다. 앱에 AWS 자격 증명을 제공하려면 아래의 단계를 수행하십시오.

  1. Amazon Cognito 콘솔에서 자격 증명 풀 관리를 선택하고, 자격 증명 풀을 생성한 다음, 시작 코드 조각을 복사합니다.

  2. 아직 AWS Mobile SDK for Xamarin을 프로젝트에 추가하지 않았다면 지금 추가합니다. 자세한 내용은 SDK for Xamarin 설정 단원을 참조하십시오.

  3. 다음 using 문을 포함합니다.

    using Amazon.CognitoIdentity;
  4. Amazon Cognito를 호출할 스크립트에 콘솔의 시작 코드 조각을 붙여 넣습니다. IDENTITY_POOL_ID 값은 계정에 따라 다릅니다.

    CognitoAWSCredentials credentials = new CognitoAWSCredentials ( "IDENTITY_POOL_ID", // Cognito Identity Pool ID RegionEndpoint.USEast1 // Region );
  5. 초기화된 Amazon Cognito 자격 증명을 사용할 AWS 클라이언트 생성자에 전달합니다. 필요한 코드는 초기화할 서비스에 따라 다릅니다. 클라이언트가 이 공급자를 사용하여 AWS 리소스에 액세스할 수 있는 자격 증명을 가져옵니다.

참고

참고: 2015년 2월 이전에 자격 증명 풀을 만든 경우 파라미터 역할 없이 이 생성자를 사용하려면 역할을 작업 증명 풀과 다시 연결해야 합니다. 이렇게 하려면 Amazon Cognito 콘솔을 열고, 자격 증명 풀 관리를 선택한 다음, 자격 증명 풀을 선택합니다. 자격 증명 풀 편집을 선택하고, 인증된 역할과 인증되지 않은 역할을 지정한 다음, 변경 사항을 저장합니다.

Amazon Cognito 자격 증명 검색

인증되지 않은 사용자를 허용하는 경우 또는 사용자를 인증하는 경우 자격 증명 공급자에서 로그인 토큰을 설정한 후에 최종 사용자의 Amazon Cognito 식별자(자격 증명 ID)를 즉시 검색할 수 있습니다.

var identityId = await credentials.GetIdentityIdAsync();