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

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

ウェブおよびモバイルアプリのユーザーは、Facebook、Google、Amazon、Apple などのソーシャル ID プロバイダー (IdP) 経由でサインインできます。組み込みの Hosted Web UI では、Amazon Cognito がすべての認証済みユーザーに関するトークンの処理と管理を提供するため、バックエンドシステムは 1 つのユーザープールトークンのセットを標準とすることができます。

ソーシャル ID プロバイダーは、AWS Management Console、AWS CLI、または Amazon Cognito API コールを使用して追加できます。


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

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

Prerequisites

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

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

  • ソーシャル ID プロバイダー。

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

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

  1. Facebook のデベロッパーアカウントを作成します。

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

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

  4. Facebook アプリに名前を付け、[アプリ ID を作成してください] を選択します。

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

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

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

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

  9. [ウェブサイト] の [サイト URL] に、/oauth2/idpresponse エンドポイントを含むユーザープールのドメインを入力します。

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

  11. [アプリドメイン] にユーザープールのドメインを入力します。

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

  13. ナビゲーションバーで [プロダクト] を選択し、[Facebook ログイン] の [設定] を選択します。

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

    [有効な OAuth リダイレクト URI] にリダイレクト URL を入力します。/oauth2/idpresponse エンドポイントを持つユーザープールドメインで構成されます。

    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. [セキュリティプロファイル名]、[セキュリティプロファイルの説明]、[Consent Privacy Notice URL (プライバシー規約 URL の同意)] に入力します。

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

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

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

  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. [承認済みのリダイレクト URI] に /oauth2/idpresponse エンドポイントのユーザープールのドメインを入力します。

    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. [説明] に、説明を入力します。

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

    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] (新しい識別子の登録) ページで、[App IDs] (アプリ ID)、[Continue] (続行) の順に選択します。

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

    1. [説明] に、説明を入力します。

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

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

    4. [Web Authentication Configuration] ページで、[Primary App ID] を選択します。[Web Domain] (ウェブドメイン) にユーザープールのドメインを入力します。[Start URL] (開始 URL) にユーザープールのドメイン 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 を追加する

このセクションでは、前のセクションで取得したクライアント ID およびクライアントシークレットを使用してユーザープールにソーシャル IdP を設定します。

AWS Management Console でユーザープールのソーシャル ID プロバイダーを設定するには

  1. Amazon Cognito コンソールに移動します。AWS 認証情報を求められる場合があります。

  2. [Manage your User Pools] を選択します。

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

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

  5. ソーシャル ID プロバイダー (例: [Facebook]、[Google]、[Login with Amazon]、[Apple]) を選択します。

  6. Google と Login with Amazon の場合は、前のセクションでソーシャル ID プロバイダーから取得したアプリのクライアント ID とクライアントシークレットを入力します。Facebook の場合は、前のセクションでソーシャル ID プロバイダーから受け取ったアプリクライアント ID とアプリクライアントシークレットを入力し、API バージョンを選択します。Facebook API の各バージョンにはライフサイクルとサポート終了日があるため、可能な限り高いバージョン (バージョン 2.12 など) を選択することをお勧めします。問題が発生した場合は、API バージョンのポスト作成を変更できます。Facebook のスコープと属性は API バージョンごとに異なる可能性があるため、統合をテストすることをお勧めします。Sign in with Apple の場合は、前のセクションで取得したサービス ID、チーム ID、キー ID、およびプライベートキーを入力します。

  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 のサインインページを離れるとエラーが発生する (Cognito の内部障害またはデベロッパーが記述したプログラムが原因である可能性があります)

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

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

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

  8. 設定するソーシャル ID プロバイダーに対して [有効化] を選択します。

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

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

  11. ユーザープールアプリの [コールバック URL] にコールバック URL を入力します。これは、ユーザーが認証に成功した後でリダイレクトされるページの URL です。

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

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

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

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

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

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

ステップ 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 です。

注記

5 分以内に完了しなかったリクエストはキャンセルされ、ログインページにリダイレクトされて、Something went wrong エラーメッセージが表示されます。