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

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

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

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

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


        ID プールを使用してユーザープール経由で AWS 認証情報にアクセスする

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

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

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

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

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

Amazon Cognito のユーザープール ID プロバイダー (IdP) を追加するには
  1. Amazon Cognito コンソール[ID プールの管理] をクリックします。アイデンティティプールを選択します。

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

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

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

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

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

    1. その IdP のユーザーに、認証済みロールを設定したときに設定したデフォルトロールを割り当てることも、ルール付きのロールを選択することもできます。Amazon Cognito ユーザープール IdP では、トークンの優先ロールクレームを持つロールを選択することもできます。cognito:preferred_role クレームの詳細については、「グループへの優先順位の値の割り当て」を参照してください。

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

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

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

  7. Amazon Cognito がこのプロバイダーで認証されたユーザーに認証情報を発行するときに割り当てるプリンシパルタグを変更するには、[アクセスコントロールの属性] を設定します。

    1. プリンシパルタグを適用しない場合は、[非アクティブ] を選択します。

    2. sub および aud クレームに基づいてプリンシパルタグを適用するには、[デフォルトマッピングを使用] を選択します。

    3. プリンシパルタグへの属性の独自のカスタムスキーマを作成するには、[カスタムマッピングを使用] を選択します。次に、タグに表示したい各クレームから取得するタグキーを入力します。

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

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

アプリユーザーが認証されると、認証情報プロバイダーのログインマップにユーザーのアイデンティティトークンを追加します。プロバイダー名は、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)