メニュー
Amazon Cognito
開発者ガイド

サインイン後に ID プールを使用して AWS サービスへアクセスする

ユーザーがユーザープールを使用してサインインし、ID プールを使用して AWS のサービスにアクセスできるようにすることができます。

認証に成功すると、ウェブやモバイルアプリケーションに Amazon Cognito よりユーザープールトークンが送信されます。これらのトークンを使用して、アプリが他の AWS サービスにアクセスできるようにする AWS 認証情報を取得できます。詳細については、「Amazon Cognito ID プール (フェデレーティッドアイデンティティ) での作業開始」を参照してください。

 ID プール を伴うユーザープールを通じて AWS 認証情報にアクセスする

ID プールとユーザープールグループを一緒に使用して、AWS リソースへのアクセスを制御する方法の詳細については、「ユーザープールにグループを追加する」および「ロールベースアクセスコントロール」を参照してください。また、ID プールと AWS Identity and Access Management の詳細については、「ID プールの概念 (フェデレーティッドアイデンティティ) 」を参照してください。

AWS マネジメントコンソール を使用したユーザープールのセットアップ

Amazon Cognito ユーザープールを作成し、クライアントアプリごとに [User Pool ID] と [App Client 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] を選択します。

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

ユーザープールを ID プールと統合する

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

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

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

JavaScriptAndroidiOS - Objective-CiOS - Swift
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)