メニュー
Amazon Cognito
開発者ガイド (Version 最終更新日: 2016 年 7 月 28 日)

ユーザープールをフェデレーテッドアイデンティティと統合する

Amazon Cognito ユーザープールはお客様が管理する ID プロバイダーを表します。クライアントアプリでユーザープールのユーザーが AWS リソースにアクセスできるようにするため、ユーザープールと関連付けられたユーザーを許可するように Amazon Cognito フェデレーテッドアイデンティティを設定する必要があります。

ユーザープールのセットアップ

Amazon Cognito ユーザープールを作成し、クライアントアプリごとに [User Pool ID] と [App Client ID] をメモしておきます。ユーザープール作成の詳細については、「ユーザープールの作成および管理」を参照してください。クライアントアプリ用のアプリの作成 (アプリのクライアント ID を取得するため) の詳細については、「ユーザープールアプリ設定の指定」を参照してください。

複数のユーザープールを作成でき、各ユーザープールは複数のアプリを持つことができます。

AWS マネジメントコンソール を使用した ID プールの設定

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

ID プールを設定するには

  1. Amazon Cognito コンソールを開きます。

  2. フェデレーテッドアイデンティティの管理を選択します。

  3. プロバイダーとして、有効にする Amazon Cognito ユーザープールの ID プールの名前を選択します。

  4. [ダッシュボード] ページで、[Edit identity pool] を選択します。

  5. [Authentication providers] セクションを展開します。

  6. Cognitoを選択します。

  7. [ユーザープール ID] を入力します。

  8. [App Client ID] を入力します。これは、Amazon Cognito の AWS マネジメントコンソールの [Your User Pools] セクションでアプリを作成したときに受け取ったクライアントアプリの ID と同じである必要があります。

  9. 追加のアプリまたはユーザープールがある場合は、[Add Another Provider] を選択し、各ユーザープールのアプリごとに [User Pool ID] および [App Client ID] に入力します。

  10. 追加するアプリまたはユーザープールがなくなった場合は、[Save changes] を選択します。

    成功した場合、変更は正常に保存されました。ダッシュボードページに表示されます。

Amazon Cognito ユーザープールの使用

認証のフローの手順に従って、ユーザーを認証します。

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

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

<region> の値は、ユーザープール ID のリージョンと同じになります。たとえば、cognito-idp.us-east-1.amazonaws.com/us-east-1_123456789 と指定します。

iOS - Objective-C

Copy
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

Copy
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)

Android

Copy
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); } });

JavaScript

Copy
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() } }); } }); }