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

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

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

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


        ID プールとユーザープールを使用した AWS 認証情報へのアクセス

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

AWS Management Console を使用したユーザープールのセットアップ

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

AWS Management Console を使用した ID プールのセットアップ

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

ID プールを設定するには

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

  2. [Manage Identity Pools] (ID プールの管理) をクリックします。

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

  4. [ダッシュボード] ページで、[ID プールの編集] を選択します。

  5. [Authentication providers] (認証プロバイダー) セクションを展開します。

  6. Cognitoを選択します。

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

  8. [アプリクライアント ID] を入力します。これは、Amazon Cognito の AWS Management Consoleにある [Your User Pools] (ユーザープール) セクションでアプリケーションを作成したときに受け取ったものと同じクライアントアプリケーション ID である必要があります。

  9. 追加のアプリまたはユーザープールがある場合は、[別のプロバイダーの追加] を選択し、各ユーザープールのアプリごとに [ユーザープール ID] および [アプリクライアント ID] に入力します。

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

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

ユーザープールを 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 と指定します。

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)