

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

# サインイン後の ID プール AWS のサービス を使用した へのアクセス
<a name="amazon-cognito-integrating-user-pools-with-identity-pools"></a>

ユーザーがユーザープールでサインインすると、ID プールから発行された一時的な API 認証情報 AWS のサービス を使用して にアクセスできます。

ウェブアプリケーションまたはモバイルアプリケーションは、ユーザープールからトークンを受け取ります。ユーザープールを ID プールの ID プロバイダーとして設定すると、ID プールはトークンを一時的な AWS 認証情報と交換します。これらの認証情報は、限られた AWS リソースセットへのアクセスをユーザーに付与する IAM ロールとそのポリシーに限定できます。詳細については、「[ID プールの認証フロー](authentication-flow.md)」を参照してください。

次の図は、アプリケーションがユーザープールでサインインし、アイデンティティプールの認証情報を取得し、 AWS のサービスにアセットをリクエストする方法を示しています。

![Amazon Cognito ユーザープールで認証し、ID プールを持つ AWS リソースへのアクセスを許可するアプリケーションのフロー図。](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/access-services-identity-pool.png)


アイデンティティプールの認証情報を使用すると、次のことができます。
+ ユーザー自身の認証情報を使用して、Amazon Verified Permissions にきめ細かな認証リクエストを行います。
+ IAM との接続を許可する Amazon API Gateway REST API または AWS AppSync GraphQL API に接続します。
+ IAM への接続を認可する Amazon DynamoDB や Amazon RDS などのデータベースバックエンドに接続します。
+ Amazon S3 バケットからアプリケーションアセットを取得します。
+ Amazon WorkSpaces 仮想デスクトップでセッションを開始します。

アイデンティティプールは、ユーザープールを用いて認証されたセッション内でのみ動作するわけではありません。また、サードパーティー ID プロバイダーから直接認証を受け入れ、認証されていないゲストユーザーの認証情報を生成することもできます。

ID プールをユーザープールグループと一緒に使用して AWS リソースへのアクセスを制御する方法の詳細については、[ユーザープールにグループを追加する](cognito-user-pools-user-groups.md)「」および「」を参照してください[ロールベースアクセスコントロールの使用](role-based-access-control.md)。また、ID プールの詳細については AWS Identity and Access Management、「」を参照してください[ID プールの認証フロー](authentication-flow.md)。

## を使用したユーザープールの設定 AWS マネジメントコンソール
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-setting-up"></a>

Amazon Cognito ユーザープールを作成し、クライアントアプリごとに [**User Pool ID**] (ユーザープール ID) と [**App Client ID**] (アプリクライアント ID) をメモしておきます。ユーザープール作成の詳細については、「[ユーザープールの開始方法](getting-started-user-pools.md)」を参照してください。

## を使用した ID プールの設定 AWS マネジメントコンソール
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-configuring"></a>

次の手順では、 を使用して ID プール AWS マネジメントコンソール を 1 つ以上のユーザープールおよびクライアントアプリケーションと統合する方法について説明します。

**Amazon Cognito のユーザープール ID プロバイダー (IdP) を追加するには**

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)で **[ID プールの管理]** をクリックします。アイデンティティプールを選択します。

1. **[ユーザーアクセス]** タブを選択します。

1. **[ID プロバイダーを追加]** を選択します。

1. **[Amazon Cognito ユーザープール]** を選択します。

1. **ユーザープール ID** と**アプリクライアント ID** を入力します。

1. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときにリクエストするロールを設定するには、[**ロール設定**] を設定します。

   1. その IdP のユーザーに、**認証済みロール**を設定したときに設定した**デフォルトロール**を与えることも、**ルール付きのロールを選択**することもできます。Amazon Cognito ユーザープール IdP では、**トークンの優先ロールクレームを持つロールを選択**することもできます。`cognito:preferred_role` クレームの詳細については、「[グループへの優先順位の値の割り当て](cognito-user-pools-user-groups.md#assigning-precedence-values-to-groups)」を参照してください。

      1. **[ルールを使用してロールを選択する]** を選択した場合、ユーザー認証からのソース**クレーム**、ルールへのクレームを比較するために使用する**オペレータ**、このロール選択と一致する**値**、および**ロール割り当て**が一致したときに割り当てる**ロール**を入力します。別の条件に基づいて追加のルールを作成するには、**[別のものを追加]** を選択します。

      1. **[トークンの優先ロールクレームを持つロールを選択]** を選択した場合、Amazon Cognito はユーザーの `cognito:preferred_role` クレームでロールの認証情報を発行します。優先ロールクレームが存在しない場合、Amazon Cognito は**ロール解決**に基づいて認証情報を発行します。

   1. **[ロールの解決]** を選択します。ユーザーのクレームがルールに合わない場合は、認証情報を拒否するか、**認証済みロール**の認証情報を発行できます。

1. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、**[アクセスコントロールの属性]** を設定します。
   + プリンシパルタグを適用しない場合は、**[非アクティブ]** を選択します。
   + `sub` および `aud` クレームに基づいてプリンシパルタグを適用するには、**[デフォルトマッピングを使用]** を選択します。
   + プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、**[カスタムマッピングを使用]** を選択します。次に、タグに表示したい各**クレーム**から取得する**タグキー**を入力します。

1. **[変更を保存]** を選択します。

## ユーザープールを ID プールと統合する
<a name="amazon-cognito-integrating-user-pools-with-identity-pools-using"></a>

アプリユーザーが認証されると、認証情報プロバイダーのログインマップにユーザーのアイデンティティトークンを追加します。プロバイダー名は、Amazon Cognito ユーザープール ID に応じて異なります。次の構造になります。

```
cognito-idp.{{<region>}}.amazonaws.com/{{<YOUR_USER_POOL_ID>}}
```

{{<region>}} の値は、**ユーザープール ID** から取得できます。例えば、ユーザープール 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)
```

------