マルチリージョンおよびマルチアカウントの Amazon Cognito ユーザープールを Amazon Cognito ID プールと統合する方法を教えてください。

所要時間2分
0

Amazon Cognito ユーザープールと Amazon Cognito ID プールが別のアカウントにある場合、それらを統合する必要があります。

簡単な説明

ユーザーがアプリケーションにサインインすると、Amazon Cognito はサインイン情報を検証します。サインインに成功すると、Amazon Cognito ユーザープールがセッションを作成し、認証されたユーザーに ID、アクセストークン、更新トークンを返します。

Amazon Cognito ID プールは、認証されていないゲストユーザーと、サポートされている ID プロバイダー (IDP) からトークンを受け取る認証済みユーザーに、一時的な AWS 認証情報を提供します。これらの AWS 認証情報により、アプリケーションは AWS サービスに安全にアクセスできます。

Amazon Cognito ユーザープールは、別の AWS アカウントにある Amazon Cognito ID プールと統合できます。この構成では、ユーザーは 1 つのアカウントのユーザープールから認証されます。次に、AWS サービスにアクセスするために、ユーザーは別のアカウントの ID プールから取得した一時的な AWS 認証情報を使用します。

解決方法

次のクロスアカウントシナリオは構成例です。

Amazon Cognito ユーザープールは、米国東部 (バージニア北部) AWS リージョンのアカウント A にあります。Amazon Cognito ID プールは、アジアパシフィック (ムンバイ) リージョンのアカウント B にあります。

このシナリオでは、アカウント A ユーザープールを使用して認証するユーザーの一時的な認証情報をアカウント B ID プールから取得する必要があります。アカウント A ユーザープールを認証プロバイダーとしてアカウント B ID プールに追加する必要があります。

ユーザープールを認証プロバイダーとして追加するには、次の手順に従います。

1.    アカウント A で新しい Amazon Cognito コンソールを開きます。

2.    [ユーザープール] を選択し、リストから適切なユーザープールを選択します。

3.    ユーザープール IDアプリクライアント ID の値をコピーして外部に保存します

認証プロバイダーとしてのユーザープールの例:

アカウント A ユーザープール
ユーザープール ID: us-east-1_xxxxxxxxx
アプリケーションクライアント ID: 79i7hhxxxxxxxxx1d5iciiu7

4.    アカウント B で新しい Amazon Cognito コンソールを開き、[フェデレーテッドアイデンティティ] を選択します。

5.    ID プールのリストから、適切な ID プールを選択します。

6.    [Edit identity pool] を選択します。[ID プールの編集] ページが表示されます。

7.    下にスクロールして [認証プロバイダー] を選択し、認証プロバイダーのオプションを表示します。

8.    ユーザープール ID には、以前にコピーしたユーザープール ID を貼り付けます。

9.    アプリクライアント ID には、先ほどコピーしたアプリクライアント ID を貼り付けます。

10.    変更を保存します。

UpdateIdentityPool API を呼び出して、ユーザープールを認証プロバイダーとして追加します。

update-identity-pool コマンドの例:

aws cognito-identity update-identity-pool --identity-pool-id example_identity_pool_id --identity-pool-name example_identity_pool_name --no-allow-unauthenticated-identities --cognito-identity-providers ProviderName=cognito-idp.example_region.amazonaws.com/example_user_pool_id,ClientId=example_app_client_id,ServerSideTokenCheck=false --region example_region

update-identity-pool コマンドの説明:

  • example_identity_pool_id はアカウント B の ID プール ID に対応しています。例:ap-south-1:12345678-abcd-abcd-abcd-1234567890ab。
  • example_app_client_id は、アカウント A のクライアント ID を表します。例: 79i7hhxxxxxxxxx1d5iciiu7。
  • example_region は ID プールのリージョンを表します。例: ap-south-1。
  • example_identity_pool_name は ID プール名に対応します。例:テストプール。
  • example_user_pool_id は、アカウント A のユーザープールを表します。例: us-east-1_xxxxxxxxx。

**重要:**UpdateIdentityPool API は ID プールの既存の設定をリセットするので、最初に DescribeIdentityPool API を呼び出してください。次に、既存のすべてのアイデンティティプールパラメータを UpdateIdentityPool API に送信します。


AWS公式
AWS公式更新しました 1年前