

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

# 인증되지 않은 사용자를 인증된 사용자로 전환
<a name="switching-identities"></a>

Amazon Cognito 자격 증명 풀은 인증된 사용자와 인증되지 않은 사용자를 모두 지원합니다. 인증되지 않은 사용자는 자격 증명 공급자(IdPs로 로그인하지 않은 경우에도 AWS 리소스에 액세스할 수 있습니다. 이 액세스 권한 등급은 사용자가 로그인하기 전에 사용자에게 콘텐츠를 표시하는 데 유용합니다. 인증되지 않은 각 사용자는 개별적으로 로그인되지 않았으며 인증되지 않은 경우에도 자격 증명 풀에 고유한 자격 증명이 있습니다.

이 섹션에서는 사용자가 인증되지 않은 자격 증명으로 로그인하는 것에서 인증된 자격 증명을 사용하는 것으로 전환하도록 선택하는 경우에 대해 설명합니다.

## Android
<a name="switching-identities-1.android"></a>

사용자는 인증되지 않은 게스트로 애플리케이션에 로그인할 수 있습니다. 결국 지원되는 IdP 중 하나를 사용하여 로그인하기로 결정할 수 있습니다. Amazon Cognito는 이전 자격 증명이 새 자격 증명과 동일한 고유 식별자를 유지하고, 프로파일 데이터가 자동으로 병합되도록 합니다.

`IdentityChangedListener` 인터페이스의 프로파일 병합을 통해 애플리케이션에 알립니다. 인터페이스에 `identityChanged` 메서드를 구현하여 이러한 메시지를 수신할 수 있습니다.

```
@override
public void identityChanged(String oldIdentityId, String newIdentityId) {
    // handle the change
}
```

## iOS - Objective-C
<a name="switching-identities-1.ios-objc"></a>

사용자는 인증되지 않은 게스트로 애플리케이션에 로그인할 수 있습니다. 결국 지원되는 IdP 중 하나를 사용하여 로그인하기로 결정할 수 있습니다. Amazon Cognito는 이전 자격 증명이 새 자격 증명과 동일한 고유 식별자를 유지하고, 프로파일 데이터가 자동으로 병합되도록 합니다.

`NSNotificationCenter`는 애플리케이션에 프로파일 병합을 알립니다.

```
[[NSNotificationCenter defaultCenter] addObserver:self
                                      selector:@selector(identityIdDidChange:)
                                      name:AWSCognitoIdentityIdChangedNotification
                                      object:nil];

-(void)identityDidChange:(NSNotification*)notification {
    NSDictionary *userInfo = notification.userInfo;
    NSLog(@"identity changed from %@ to %@",
        [userInfo objectForKey:AWSCognitoNotificationPreviousId],
        [userInfo objectForKey:AWSCognitoNotificationNewId]);
}
```

## iOS - Swift
<a name="switching-identities-1.ios-swift"></a>

사용자는 인증되지 않은 게스트로 애플리케이션에 로그인할 수 있습니다. 결국 지원되는 IdP 중 하나를 사용하여 로그인하기로 결정할 수 있습니다. Amazon Cognito는 이전 자격 증명이 새 자격 증명과 동일한 고유 식별자를 유지하고, 프로파일 데이터가 자동으로 병합되도록 합니다.

`NSNotificationCenter`는 애플리케이션에 프로파일 병합을 알립니다.

```
[NSNotificationCenter.defaultCenter().addObserver(observer: self
   selector:"identityDidChange"
   name:AWSCognitoIdentityIdChangedNotification
   object:nil)

func identityDidChange(notification: NSNotification!) {
  if let userInfo = notification.userInfo as? [String: AnyObject] {
    print("identity changed from: \(userInfo[AWSCognitoNotificationPreviousId])
    to: \(userInfo[AWSCognitoNotificationNewId])")
  }
}
```

## JavaScript
<a name="switching-identities-1.javascript"></a>

### 처음에 인증되지 않은 사용자
<a name="switching-identities-1.javascript-unauth"></a>

사용자는 일반적으로 인증되지 않은 역할로 시작합니다. 이 역할의 경우 로그인 속성 없이 구성 객체의 인증 자격 증명 속성을 설정합니다. 이 경우, 기본 구성은 다음과 같을 수 있습니다.

```
// set the default config object
var creds = new AWS.CognitoIdentityCredentials({
    IdentityPoolId: 'us-east-1:1699ebc0-7900-4099-b910-2df94f52a030'
});
AWS.config.credentials = creds;
```

### 인증된 사용자로 전환
<a name="switching-identities-1.javascript-auth"></a>

인증되지 않은 사용자가 IdP에 로그인한 상태에서 현재 사용자가 토큰을 갖고 있다면, 인증 자격 증명 객체를 업데이트하고 Logins 토큰을 추가하는 사용자 지정 함수를 호출하여 인증되지 않은 사용자를 인증된 사용자로 전환할 수 있습니다.

```
// Called when an identity provider has a token for a logged in user
function userLoggedIn(providerName, token) {
    creds.params.Logins = creds.params.Logins || {};
    creds.params.Logins[providerName] = token;

    // Expire credentials to refresh them on the next request
    creds.expired = true;
}
```

또한 `CognitoIdentityCredentials` 객체를 생성할 수 있습니다. 이 경우 업데이트된 인증 자격 증명 구성 정보를 반영하도록 기존 서비스 객체의 인증 자격 증명 속성을 재설정해야 합니다. [전역 구성 객체 사용](https://docs.aws.amazon.com/sdk-for-javascript/latest/developer-guide/global-config-object.html)을 참조하세요.

`CognitoIdentityCredentials` 객체에 대한 자세한 내용은 AWS SDK for JavaScript API 참조의 [AWS.CognitoIdentityCredentials](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CognitoIdentityCredentials.html)를 참조하세요.

## Unity
<a name="switching-identities-1.unity"></a>

사용자는 인증되지 않은 게스트로 애플리케이션에 로그인할 수 있습니다. 결국 지원되는 IdP 중 하나를 사용하여 로그인하기로 결정할 수 있습니다. Amazon Cognito는 이전 자격 증명이 새 자격 증명과 동일한 고유 식별자를 유지하고, 프로파일 데이터가 자동으로 병합되도록 합니다.

`IdentityChangedEvent`를 구독하여 프로파일 병합에 대한 알림을 받을 수 있습니다.

```
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e)
{
    // handle the change
    Debug.log("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId);
};
```

## Xamarin
<a name="switching-identities-1.xamarin"></a>

사용자는 인증되지 않은 게스트로 애플리케이션에 로그인할 수 있습니다. 결국 지원되는 IdP 중 하나를 사용하여 로그인하기로 결정할 수 있습니다. Amazon Cognito는 이전 자격 증명이 새 자격 증명과 동일한 고유 식별자를 유지하고, 프로파일 데이터가 자동으로 병합되도록 합니다.

```
credentialsProvider.IdentityChangedEvent += delegate(object sender, CognitoAWSCredentials.IdentityChangedArgs e){
    // handle the change
    Console.WriteLine("Identity changed from " + e.OldIdentityId + " to " + e.NewIdentityId);
};
```