ユーザープールへのソーシャル ID プロバイダーの追加 - Amazon Cognito

ユーザープールへのソーシャル ID プロバイダーの追加

ウェブおよびモバイルアプリのユーザーは、Facebook、Google、Amazon、Apple などのソーシャル ID プロバイダー (IdP) 経由でサインインできます。組み込みの Hosted Web UI では、Amazon Cognito がすべての認証済みユーザーに関するトークンの処理と管理を提供するため、バックエンドシステムは 1 つのユーザープールトークンのセットを標準とすることができます。サポートされているソーシャル ID プロバイダーと統合するには、ホストされた UI を有効にする必要があります。Amazon Cognito がホストされた UI を構築すると、Amazon Cognito、OIDC およびソーシャル IdPs が情報の交換に使用する OAuth 2.0 エンドポイントが作成されます。詳細については、Amazon Cognito API リファレンスを参照してください。

AWS Management Console にソーシャル IdP を追加するか、AWS CLI または Amazon Cognito API を使用することができます。


                ソーシャルサインインの認証の概要
注記

サードパーティー (フェデレーション) 経由のサインインは、Amazon Cognito のユーザープールで使用できます。この機能は、Amazon Cognito ID プール (フェデレーティッド ID) 経由のフェデレーションとは無関係です。

前提条件

開始するには、以下が必要です。

  • アプリケーションクライアントとユーザープールドメインを使用するユーザープール。詳細については、「ユーザープールの作成」を参照してください。

  • ソーシャルIdP。

ステップ 1: ソーシャル IdP に登録する

Amazon Cognito でソーシャル IdP を作成する前に、アプリケーションをソーシャル IdP に登録して、クライアント ID とクライアントシークレットを取得する必要があります。

  1. Facebook の開発者アカウントを作成します。

  2. Facebook 認証情報を使用してサインインします。

  3. [My Apps] (マイアプリ) メニューから、[新しいアプリを作成] (新しいアプリを作成) を選択します。

  4. Facebook アプリケーションの名前を入力し、[Create App ID] (アプリケーション ID の作成) を選択します。

  5. 左のナビゲーションバーで、[設定]、[ベーシック] の順に選択します。

  6. [App ID] (アプリ ID)] と [App Secret (アプリシークレット) を書き留めます。これらは次のセクションで使用します。

  7. ページの下部で、[+ プラットフォームを追加] を選択します。

  8. [Website] (ウェブサイト) を選択します。

  9. [Website] (ウェブサイト) で、アプリケーションのサインインページへのパスを [Site URL] (サイト URL) に入力します。

    https://<your_user_pool_domain>/login?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com
  10. [Save changes] (変更の保存) をクリックします。

  11. ユーザープールドメインのルートへのパスを [App Domains] (アプリケーションドメイン) に入力します。

    https://<your-user-pool-domain>
  12. [Save changes] (変更の保存) をクリックします。

  13. ナビゲーションバーで [Add Product] (プロダクトの追加) を選択し、[Facebook Login] (Facebook ログイン) の [Set up] (設定) を選択します。

  14. ナビゲーションバーで [Facebook ログイン]、[設定] の順に選択します。

    ユーザープールドメインの /oauth2 /idpresponse エンドポイントへのパスを [Valid OAuth Redirect URIs] (有効な OAuth リダイレクト URI) に入力します。

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. [Save changes] (変更の保存) をクリックします。

  1. Amazon の開発者アカウントを作成します。

  2. Amazon 認証情報を使用してサインインします。

  3. Amazon クライアント ID およびクライアントシークレットを受け取るには、Amazon セキュリティプロファイルを作成する必要があります。

    ページの上部にあるナビゲーションバーで [Apps and Services (アプリとサービス)] を選択し、[Login with Amazon] を選択します。

  4. [Create a New Security Profile (新しいセキュリティプロファイルの作成)] を選択します。

  5. [Security Profile Name] (セキュリティプロファイル名)、[Security Profile Description] (セキュリティプロファイルの説明)、[Consent Privacy Notice URL] (プライバシー規約 URL の同意) に入力します。

  6. [Save] を選択します。

  7. [クライアント ID] および [クライアントシークレット] を選択して、クライアント ID およびシークレットを表示します。これらは次のセクションで使用します。

  8. 歯車アイコンにマウスカーソルを合わせ、[Web Settings] (ウェブ設定)、[Edit] (編集) の順に選択します。

  9. [Allowed Origins] (許可されたオリジン) にユーザープールのドメインを入力します。

    https://<your-user-pool-domain>
  10. /oauth2/idpresponse エンドポイントを使用するユーザープールドメインを [Allowed Return URLs] (許可されたリターン URL) に入力します。

    https://<your-user-pool-domain>/oauth2/idpresponse
  11. [Save] を選択します。

  1. Google の開発者アカウントを作成します。

  2. Google 認証情報を使用してサインインします。

  3. [CONFIGURE A PROJECT (プロジェクトの設定)] を選択します。

  4. プロジェクト名を入力し、[NEXT] (次へ) を選択します。

  5. プロダクト名を入力し、[NEXT] (次へ) を選択します。

  6. [Where are you calling from?] (どこから呼び出していますか?) ドロップダウンリストから、[Web browser] (ウェブブラウザ) を選択します。

  7. [Authorized JavaScript origins] (承認済みの JavaScript 生成元) にユーザープールのドメインを入力します。

    https://<your-user-pool-domain>
  8. [Create] (作成) を選択します。このステップでは、[クライアント ID] と [クライアントシークレット] は使用しません。

  9. [DONE (完了)] を選択します。

  10. Google コンソールにサインインします。

  11. 左のナビゲーションバーで、[認証情報] を選択します。

  12. [認証情報を作成] ドロップダウンリストから [OAuth クライアント ID] を選択して、OAuth 2.0 認証情報を作成します。

  13. [ウェブアプリケーション] を選択します。

  14. [Authorized JavaScript origins] (承認済みの JavaScript 生成元) にユーザープールのドメインを入力します。

    https://<your-user-pool-domain>
  15. /oauth2/idpresponse エンドポイントを使用するユーザープールドメインを [Authorized Redirect URIs] (承認済みリダイレクト URI) に入力します。

    https://<your-user-pool-domain>/oauth2/idpresponse
  16. [作成] を 2 回選択します。

  17. [OAuth クライアント ID] と [クライアントシークレット] を書き留めます。これらは次のセクションで必要になります。

  18. [OK] を選択します。

  1. Apple の開発者アカウントを作成します。

  2. Apple 認証情報を使用してサインインします。

  3. 左のナビゲーションペインで、[Certificates, IDs & Profiles ] (証明書、ID & プロファイル) を選択します。

  4. 左のナビゲーションペインで、[Identifiers] (識別子) を選択します。

  5. [Identifiers] (識別子) ページで、[+] アイコンを選択します。

  6. [Register a New Identifier] (新しい識別子の登録) ページで、[App IDs] (アプリ ID)、[Continue] (続行) の順に選択します。

  7. [Register an App ID] ページで、次の操作を行います。

    1. [Description] を入力します。

    2. [App ID Prefix] (アプリケーション ID プレフィックス) で、識別子を入力します。[App ID Prefix] (アプリケーション ID プレフィックス) の下にある値をメモしておきます。この値は、Apple を IdP として ステップ 2: ユーザープールにソーシャル IdP を追加する で選択した後で必要になります。

    3. [Capabilities] (機能) で、[Sign In with Apple] (Apple でサインイン) を選択してから [Edit] (編集) を選択します。

    4. [Sign in with Apple: App ID Configuration] (Apple でサインイン: アプリケーション ID の設定) ページでアプリ用に適切な設定を選択し、次に [Save] (保存) を選択します。

    5. [Continue (続行)] を選択します。

  8. [Confirm your App ID] ページで、[登録] を選択します。

  9. [Identifiers] (識別子) ページで、右側にある [App IDs] (アプリケーション ID) にカーソルを重ね、[Services IDs] (サービス ID)を選択し、[+] アイコンの順にクリックします。

  10. [Register a New Identifier] (新しい識別子の登録) ページで、[Services IDs] (サービス ID)、[Continue] (続行) の順に選択します。

  11. [Register a Services ID] ページで、次の操作を行います。

    1. [Description] を入力します。

    2. [Identifier] (識別子) で、識別子を入力します。このサービス ID をメモしておきます。この値は、ステップ 2: ユーザープールにソーシャル IdP を追加する で Apple を IdP として選択した後で使用します。

    3. [Sign In with Apple] (Apple でサインイン) を選択後、[Configure] (設定) を選択します。

    4. [Web Authentication Configuration] ページで、[Primary App ID] を選択します。[Web Domain] (ウェブドメイン) にユーザープールのドメインを入力します。[Return URLs] (URL を返す) で、ユーザープールドメインを入力し、/oauth2/idpresponse エンドポイントを含める必要があります。例:

      https://<your-user-pool-domain>/oauth2/idpresponse
    5. [Add] (追加)、[Save] (保存) と選択します。ドメインを検証する必要はありません。

    6. [Continue] (続行) を選択し、[Register] (登録) を選択します。

  12. 左のナビゲーションペインで [Keys] (キー) を選択します。

  13. [Keys (キー)] ページで、[+] アイコンを選択します。

  14. [Register a New Key] ページで、次の操作を行います。

    1. [Key Name] (キー名) を入力します。

    2. [Sign In with Apple] (Apple でサインイン) を選択後、[Configure] (設定) を選択します。

    3. [Configure Key] (キーの設定) ページで、[Primary App ID (プライマリアプリ ID)、[Save] (保存) の順に選択します。

    4. [Continue] (続行) を選択し、[Register] (登録) を選択します。

  15. [Download Your Key] (鍵のダウンロード) ページで、[Download] (ダウンロード) をクリックしてプライベートキーをダウンロードしてから、[Done] (完了) を選択します。このプライベートキーと、このページに表示されている [Key ID] (キー ID) の値は、ステップ 2: ユーザープールにソーシャル IdP を追加する で Apple を ID プロバイダーとして選択した後で必要になります。

ステップ 2: ユーザープールにソーシャル IdP を追加する

Original console

AWS Management Console でユーザープールのソーシャル IdP を設定するには

  1. Amazon Cognito コンソールに移動します。プロンプトが表示されたら、AWS 認証情報を入力します。

  2. [Manage User Pools] (ユーザープールの管理) を選択します。

  3. リストから既存のユーザープールを選択するか、ユーザープールを作成します。

  4. 左のナビゲーションバーで、[ID プロバイダー] を選択します。

  5. ソーシャル IdP ([Facebook][Google][Login with Amazon][Sign in with Apple]) を選択します。

  6. ソーシャル IdP の選択に基づいて、次のステップから選択します。

    • GoogleLogin with Amazon (Amazon でのログイン) — 前のセクションで生成された [app client ID] (アプリケーションクライアント ID) と [app client secret] (アプリケーションクライアントシークレット) を入力します。

    • Facebook — 前のセクションで生成された [app client ID] (アプリケーションクライアント ID) と [app client secret] (アプリケーションクライアントシークレット) を入力し、API バージョン (例えば、バージョン 2.12) を選択します。Facebook API の各バージョンにはライフサイクルとサポート終了日があるため、可能な限り最新のバージョンを選択することをお勧めします。Facebook のスコープと属性は API バージョンによって異なる場合があります。Facebook でソーシャル ID ログインをテストして、フェデレーションが意図したとおりに機能することを確認することをお勧めします。

    • Sign In with Apple (Apple でのサインイン) — 以前のセクションで作成された [Services ID] (サービス ID)、[Team ID] (チーム ID)、[Key ID] (キー ID) および [private key] プライベートキーを入力します。

  7. 承認するスコープの名前を入力します。スコープは、アプリでアクセスするユーザー属性 (nameemail など) を定義します。Facebook の場合は、コンマで区切る必要があります。Google および Login with Amazon の場合は、スペースで区切って指定します。Sign in with Apple の場合は、アクセスするスコープのチェックボックスをオンにします。

    ソーシャル ID プロバイダー スコープ例
    Facebook public_profile, email
    Google profile email openid
    Login with Amazon profile postal_code
    Apple でのサインイン email name

    アプリユーザーはこれらの属性をアプリに提供することに同意を求められます。スコープの詳細については、Google、Facebook、Login with Amazon、および Sign in with Apple のドキュメントを参照してください。

    以下は、Sign in with Apple の場合にスコープが返らない可能性があるユーザーシナリオです。

    • エンドユーザーが Apple のサインインページを離れるとエラーが発生する (Amazon Cognito の内部障害またはデベロッパーが記述したプログラムが原因である可能性があります)

    • サービス ID 識別子は、ユーザープールやその他の認証サービス全体で使用されます

    • エンドユーザーが以前にサインインしてから、デベロッパーによってさらにスコープが追加されている (新しい情報は取得されません)

    • デベロッパーによって削除されたユーザーが Apple ID プロファイルからアプリを削除せずに再度サインインしている

  8. 設定するソーシャル IdP に対して [Enable] (有効化) を選択します。

  9. ナビゲーションバーから、[アプリクライアントの設定] を選択します。

  10. ユーザープールアプリの [Enabled Identity Providers] (有効な ID プロバイダー) の 1 つとしてソーシャル IdP を選択します。

  11. ユーザープールアプリケーションの [Callback URL(s)] (コールバック URL) にコールバック URL を入力します。これは、ユーザーが認証に成功した後でリダイレクト先の URL です。

    https://www.example.com
  12. [Save changes] (変更の保存) をクリックします。

  13. [属性マッピング] タブで、次のように最低でも必須属性 (通常は email) のマッピングを追加します。

    1. Facebook、Google、または Amazon の属性名チェックボックスをオンにして選択します。Amazon Cognito コンソールにリストされていない追加の属性の名前を入力することもできます。

    2. ドロップダウンリストから送信先ユーザープール属性を選択します。

    3. [Save changes] (変更の保存) をクリックします。

    4. [要約に移動] を選択します。

New console

AWS Management Console でユーザープールのソーシャル IdP を設定するには

  1. Amazon Cognito コンソールに移動します。プロンプトが表示されたら、AWS 認証情報を入力します。

  2. [User Pools] (ユーザープール) を選択します。

  3. リストから既存のユーザープールを選択するか、ユーザープールを作成します。

  4. [Sign-in experience] (サインインエクスペリエンス) タブを選択します。[Federated sign-in] (フェデレーションサインイン) を探し、[Add an identity provider] (ID プロバイダーを追加する) を選択します。

  5. ソーシャル IdP ([Facebook][Google][Login with Amazon][Sign in with Apple]) を選択します。

  6. ソーシャル IdP の選択に基づいて、次のステップから選択します。

    • GoogleLogin with Amazon (Amazon でのログイン) — 前のセクションで生成された [app client ID] (アプリケーションクライアント ID) と [app client secret] (アプリケーションクライアントシークレット) を入力します。

    • Facebook — 前のセクションで生成された [app client ID] (アプリケーションクライアント ID) と [app client secret] (アプリケーションクライアントシークレット) を入力し、API バージョン (例えば、バージョン 2.12) を選択します。Facebook API の各バージョンにはライフサイクルとサポート終了日があるため、可能な限り最新のバージョンを選択することをお勧めします。Facebook のスコープと属性は API バージョンによって異なる場合があります。Facebook でソーシャル ID ログインをテストして、フェデレーションが意図したとおりに機能することを確認することをお勧めします。

    • Sign In with Apple (Apple でのサインイン) — 以前のセクションで作成された [Services ID] (サービス ID)、[Team ID] (チーム ID)、[Key ID] (キー ID) および [private key] プライベートキーを入力します。

  7. 使用したい [Authorized scopes] (承認するスコープ) の名前を入力します。スコープは、アプリでアクセスするユーザー属性 (nameemail など) を定義します。Facebook の場合は、コンマで区切る必要があります。Google および Login with Amazon の場合は、スペースで区切って指定します。Sign in with Apple の場合は、アクセスするスコープのチェックボックスをオンにします。

    ソーシャル ID プロバイダー スコープ例
    Facebook public_profile, email
    Google profile email openid
    Login with Amazon profile postal_code
    Apple でのサインイン email name

    アプリケーションユーザーは、これらの属性をアプリケーションに提供することに同意するよう求められます。ソーシャルプロバイダーのスコープの詳細については、Google、Facebook、Login with Amazon、および Sign in with Apple のドキュメントを参照してください。

    以下は、Sign in with Apple の場合にスコープが返らない可能性があるユーザーシナリオです。

    • エンドユーザーが Apple のサインインページを離れるとエラーが発生する (Amazon Cognito の内部障害またはデベロッパーが記述したプログラムが原因である可能性があります)

    • サービス ID 識別子がユーザープールや他の認証サービス全体で使用されている

    • エンドユーザーが以前にサインインしてから、デベロッパーによってさらにスコープが追加されている (新しい情報は取得されません)

    • デベロッパーによって削除されたユーザーが Apple ID プロファイルからアプリを削除せずに再度サインインしている

  8. IdP からユーザープールに属性をマッピングします。詳細は、「ユーザープール用 ID プロバイダー属性マッピングの特定」を参照してください。

  9. [Create] を選択します。

  10. [App client integration] (アプリケーションクライアント統合) タブから、[App clients] (アプリケーションクライアント) のリストより 1 つ選択して、[Edit hosted UI settings] (ホストされた UI 設定の編集) をクリックします。[Identity providers] (ID プロバイダー) で、新しいソーシャル IdP をアプリクライアントに追加します。

  11. [Save changes] (変更の保存) をクリックします。

ステップ 3: ソーシャル IdP の設定をテストする

前の 2 つのセクションの要素を使用してログイン URL を作成できます。この URL を使用してソーシャル IdP の設定をテストします。

https://<your_user_pool_domain>/login?response_type=code&client_id=<your_client_id>&redirect_uri=https://www.example.com

ドメインは、コンソールにあるユーザープールの [ドメイン名] ページで確認できます。クライアント ID は [アプリクライアントの設定] ページにあります。redirect_uri パラメータのコールバック URL を使用します。これは、ユーザーが認証に成功した後でリダイレクトされるページの URL です。

注記

Amazon Cognito は 5 分以内に完了しない認証リクエストをキャンセルし、ホストされた UI にユーザーをリダイレクトします。ページには、Something went wrong というエラーメッセージが表示されます。