Amazon Cognito
開発者ガイド

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

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

ソーシャル ID プロバイダーを追加するには、AWS マネジメントコンソール、AWS CLI、または Amazon Cognito API コールを使用できます。


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

注記

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

前提条件

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

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

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

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

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

アプリケーションを Facebook に登録するには
  1. Facebook の開発者アカウントを作成します。

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

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

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

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

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

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

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

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

    https://<your-user-pool-domain>/oauth2/idpresponse
  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] を選択します。

アプリケーションを Amazon に登録するには
  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] を選択します。

アプリケーションを Google に登録するには
  1. Google の開発者アカウントを作成します。

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

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

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

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

  6. [Where are you calling from? (どちらからアクセスしていますか?)] ドロップダウンリストから [ウェブブラウザ] を選択します

  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] を選択します。

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

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

AWS マネジメントコンソール でユーザープールのソーシャル ID プロバイダーを設定するには

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

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

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

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

  5. [Facebook]、[Google]、[Login with Amazon] などのソーシャル ID プロバイダーを選択します。

  6. 前のセクションでソーシャル ID プロバイダーから取得したアプリのクライアント ID とクライアントシークレットを入力します。

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

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

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

  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 エラーメッセージが表示されます。