

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 認証情報の取得
<a name="getting-credentials"></a>

Amazon Cognito を使用して、ユーザーが AWS リソースにアクセスできるように、権限が制限された一時的な認証情報をアプリケーションに配信できます。このセクションでは、認証情報を取得する方法と、ID プールから Amazon Cognito ID を取得する方法について説明します。

Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。認証されていないユーザーは ID が検証されないため、このロールはアプリケーションのゲストユーザーに適切です。または、ユーザーの ID が検証されているかどうかが重要ではない場合に適切です。認証されているユーザーは、アプリケーションにログイン際にサードパーティーの ID プロバイダーまたはユーザープールを通じて ID が検証されます。リソースの許可の範囲を適切に設定し、認証されていないユーザーからのアクセスを許可しないようにします。

Amazon Cognito ID は認証情報ではありません。これらは、 AWS Security Token Service () のウェブ ID フェデレーションサポートを使用して認証情報と交換されますAWS STS。アプリケーションユーザーによる AWS 認証情報の取得に推奨される方法は、`AWS.CognitoIdentityCredentials` の使用です。認証情報オブジェクトの ID は、 を使用して認証情報と交換されます AWS STS。

**注記**  
2015 年 2 月より前に作成したアイデンティティプールの場合で、ロールをパラメータとせずに `AWS.CognitoIdentityCredentials` コンストラクターを使用するには、再度そのロールと ID プールの関連付けを行う必要があります。これを実行するには、[Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)を開き、**[Manage identity pools]** (ID プールの管理) をクリックしてから ID プールを選択し、**[Edit identity Pool]** (ID プールの編集) をクリックします。さらに、認証済みと認証済みでないロールを指定した上で変更を保存します。

ウェブ ID 認証情報プロバイダーは、 AWS SDK のデフォルトの認証情報プロバイダーチェーンの一部です。SDK または の AWS ローカル`config`ファイルに ID プールトークンを設定するには AWS CLI、`web_identity_token_file`プロファイルエントリを追加します。「SDK およびツールリファレンスガイド」の[「ロール認証情報プロバイダーを引き受ける](https://docs.aws.amazon.com/sdkref/latest/guide/feature-assume-role-credentials.html)」を参照してください。 AWS SDKs 

SDK にウェブ ID 認証情報を入力する方法の詳細については、SDK ディベロッパーガイドを参照してください。最良の結果を得るには、 に組み込まれている ID プール統合を使用してプロジェクトを開始します AWS Amplify。

**AWS ID プールで認証情報を取得および設定するための SDK リソース**
+ Amplify Dev Center の[アイデンティティプールフェデレーション](https://docs.amplify.aws/lib/auth/advanced/q/platform/android/#identity-pool-federation) (Android) 
+ Amplify Dev Center の[アイデンティティプールフェデレーション](https://docs.amplify.aws/lib/auth/advanced/q/platform/ios/#identity-pool-federation) (iOS) 
+  AWS SDK for JavaScript デベロッパーガイドの[Amazon Cognito ID を使用してユーザーを認証](https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/loading-browser-credentials-cognito.html)する」
+  AWS SDK for .NET デベロッパーガイドの[Amazon Cognito 認証情報プロバイダー](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html)」
+ デ AWS SDK for Go ベロッパーガイドの[「認証情報をプログラムで指定する](https://aws.github.io/aws-sdk-go-v2/docs/configuring-sdk/#specify-credentials-programmatically)」
+  AWS SDK for Java 2.x デベロッパーガイドの[コードで一時的な認証情報を指定する](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-explicit.html) 
+  AWS SDK for PHP デベロッパーガイドの [assumeRoleWithWebIdentityCredentialProvider](https://docs.aws.amazon.com/sdk-for-php/v3/developer-guide/guide_credentials_provider.html#assume-role-with-web-identity-provider) プロバイダー
+  AWS SDK for Python (Boto3)  ドキュメントの「[ウェブ ID プロバイダーの役割を引き受ける](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/credentials.html#assume-role-with-web-identity-provider)」
+ デ AWS SDK for Rust ベロッパーガイドの[認証情報とデフォルトリージョンの指定](https://docs.aws.amazon.com/sdk-for-rust/latest/dg/credentials.html) 

以下のセクションでは、一部の AWS SDKsのコード例を示します。

## Android
<a name="getting-credentials-1.android"></a>

Amazon Cognito を使用して、ユーザーが AWS リソースにアクセスできるように、権限が制限された一時的な認証情報をアプリケーションに配信できます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 認証情報を提供するには、以下の手順に従います。

Android アプリで Amazon Cognito ID プールを使用するには、 を設定します AWS Amplify。詳細については、*Amplify Dev Center* の「[認証](https://docs.amplify.aws/lib/auth/getting-started/q/platform/android/)」を参照してください。

**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](https://developer.android.com/reference/android/os/NetworkOnMainThreadException.html) がスローされます。`AsyncTask` を使用して、バックグラウンドスレッドにコードを移動する必要があります。詳細については、「[Android のドキュメント](https://developer.android.com/training/basics/network-ops/connecting.html#AsyncTask)」を参照してください。`getCachedIdentityId()` を呼び出して ID を取得することもできますが、この操作が可能なのは、既に ID がローカルにキャッシュされている場合のみです。それ以外の場合、メソッドは null を返します。

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

Amazon Cognito を使用して、ユーザーが AWS リソースにアクセスできるように、権限が制限された一時的な認証情報をアプリケーションに配信できます。Amazon Cognito ID プールは、認証された ID と認証されていない ID の両方をサポートします。アプリに AWS 認証情報を提供するには、次の手順を実行します。

iOS アプリで Amazon Cognito ID プールを使用するには、 を設定します AWS Amplify。詳細については、*Amplify Dev Center* の「[Swift 認証](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/)」と「[Flutter 認証](https://docs.amplify.aws/lib/auth/getting-started/q/platform/flutter/)」を参照してください。

**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 を取得できます。ただし、プロバイダーでアイデンティティ ID が設定されていない場合、`credentialsProvider.identityId` を呼び出すと `nil` が返されます。詳細については、[Amplify iOS SDK リファレンス](https://github.com/aws-amplify/aws-sdk-ios)を参照してください。

## iOS - Swift
<a name="getting-credentials-1.ios-swift"></a>

Amazon Cognito を使用して、権限が制限された一時的な認証情報をアプリケーションに配信し、ユーザーが AWS リソースにアクセスできるようにします。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 認証情報を提供するには、以下の手順に従います。

iOS アプリで Amazon Cognito ID プールを使用するには、 を設定します AWS Amplify。詳細については、*Amplify Dev Center* の「[Swift 認証](https://docs.amplify.aws/lib/auth/getting-started/q/platform/ios/)」を参照してください。

**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 を取得できます。ただし、プロバイダーでアイデンティティ ID が設定されていない場合、`credentialsProvider.identityId` を呼び出すと `nil` が返されます。詳細については、[Amplify iOS SDK リファレンス](https://github.com/aws-amplify/aws-sdk-ios)を参照してください。

## JavaScript
<a name="getting-credentials-1.javascript"></a>

ID プールをまだ作成して `AWS.CognitoIdentityCredentials` を使用する前に [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito)で ID プールを作成してください。

ID プロバイダーで ID プールを設定すると、`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` プロパティは、ID プロバイダー名の ID トークンへのマッピングです。ID プロバイダーからのトークンの取得方法は、使用するプロバイダーによって異なります。たとえば、Facebook を ID プロバイダーとして使用する場合は、`FB.login`Facebook SDK[ の ](https://developers.facebook.com/docs/facebook-login/web) 関数を使用して ID プロバイダートークンを取得します。

```
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
<a name="getting-credentials-1.unity"></a>

 Amazon Cognito を使用して、ユーザーが AWS リソースにアクセスできるように、権限が制限された一時的な認証情報をアプリケーションに配信できます。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 認証情報を提供するには、以下の手順に従います。

[AWS  SDK for Unity](https://docs.aws.amazon.com/mobile/sdkforunity/developerguide/what-is-unity-plugin.html) も、[SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html) の一部になりました。で Amazon Cognito の使用を開始するには SDK for .NET、 AWS SDK for .NET デベロッパーガイドの[Amazon Cognito 認証情報プロバイダー](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html)」を参照してください。または、 でアプリケーションを構築するためのオプションについては、[「Amplify 開発センター](https://docs.amplify.aws/)」を参照してください AWS Amplify。

**Amazon Cognito アイデンティティの取得**

 エンドユーザー用の固有 Amazon Cognito 識別子 (アイデンティティ ID) は、認証されていないユーザーを許可している場合はただちに取得、またはユーザーを認証している場合は、認証情報プロバイダーでログイントークンを設定した後で取得することができます。

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

## Xamarin
<a name="getting-credentials-1.xamarin"></a>

Amazon Cognito を使用して、権限が制限された一時的な認証情報をアプリケーションに配信し、ユーザーが AWS リソースにアクセスできるようにします。Amazon Cognito は、認証されている ID と認証されていない ID の両方をサポートします。アプリに AWS 認証情報を提供するには、以下の手順に従います。

[AWS  SDK for Xamarin](https://docs.aws.amazon.com/mobile/sdkforxamarin/developerguide/Welcome.html) も、[SDK for .NET](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/welcome.html) の一部になりました。で Amazon Cognito の使用を開始するには SDK for .NET、 AWS SDK for .NET デベロッパーガイドの[Amazon Cognito 認証情報プロバイダー](https://docs.aws.amazon.com/sdk-for-net/v3/developer-guide/cognito-creds-provider.html)」を参照してください。または、 でアプリケーションを構築するためのオプションについては、[「Amplify 開発センター](https://docs.amplify.aws/)」を参照してください AWS Amplify。

**注記**  
 **注:** 2015 年 2 月より前に作成した ID プールで、ロールをパラメータとせずに、このコンストラクターを使用するには、再度そのロールと ID プールの関連付けを行う必要があります。これを実行するには、[Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)を開き、**[Manage identity pools]** (ID プールの管理) をクリックしてから ID プールを選択し、**[Edit identity Pool]** (ID プールの編集) をクリックします。さらに、認証済みと認証済みでないロールを指定した上で変更を保存します。

**Amazon Cognito アイデンティティの取得**

 エンドユーザー用の固有 Amazon Cognito 識別子 (アイデンティティ ID) は、認証されていないユーザーを許可している場合はただちに取得、またはユーザーを認証している場合は、認証情報プロバイダーでログイントークンを設定した後で取得することができます。

```
var identityId = await credentials.GetIdentityIdAsync();
```