ステップ 3. ユーザープールにソーシャルサインインを追加する (オプション) - Amazon Cognito

ステップ 3. ユーザープールにソーシャルサインインを追加する (オプション)

アプリユーザーが Facebook、Google、Amazon、Apple などのソーシャル ID プロバイダー (IdP) を介してサインインするようにできます。ユーザーが直接サインインしても、サードパーティーを介してサインインしても、すべてのユーザーにはユーザープールにプロファイルがあります。ソーシャルサインイン ID プロバイダーを通じてサインインを追加しない場合は、この手順を省略してください。

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

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

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

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

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

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

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

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

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

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

  9. [Website] (Web サイト) で、アプリケーションクライアントエンドポイントのサインイン URL を[Site URL] (サイトの URL) に入力します。サインイン URL の形式は次のようになります。

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

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

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

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

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

    [Valid OAuth Redirect URIs] (有効な OAuth リダイレクト URI) にリダイレクト URL を入力します。リダイレクト 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. [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] を選択します。

Google Cloud プラットフォームの OAuth 2.0 の詳細については、開発者向け Google Workspace のドキュメントの「Learn about authentication & authorization」を参照してください。

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

  2. Google Cloud Platform コンソールにサインインします。

  3. 上部のナビゲーションバーから、[Select a project] (プロジェクトの選択) を選択します。Google プラットフォームのプロジェクトが既にある場合は、このメニューには代わりにデフォルトのプロジェクトが表示されます。

  4. [NEW PROJECT] (新しいプロジェクト) を選択します。

  5. 製品の名前を入力し、[CREATE] (作成) を選択します。

  6. 左のナビゲーションバーで、[APIs and Services] (API とサービス) を選択し、[Oauth consent screen] (OAuth 同意画面) を選択します。

  7. アプリ情報、[App domain] (アプリケーションドメイン)、[Authorized domains] (承認済みドメイン)、[Developer contact information] (開発者の連絡先情報) を入力します。[Authorized domains] (承認済みドメイン) には、amazoncognito.com とカスタムドメインのルート (例: example.com) を含める必要があります。[SAVE AND CONTINUE] (保存して続行) を選択します。

  8. 1. [Scopes] (スコープ) で、[Add or remove scopes] (スコープの追加または削除) を選択し、少なくとも、次の OAuth スコープを選択します。

    1. .../auth/userinfo.email

    2. .../auth/userinfo.profile

    3. openid

  9. [Test users] (テストユーザー) で、[Add users] (ユーザーの追加) を選択します。E メールアドレスおよびその他の承認済みテストユーザーを入力して、[SAVE AND CONTINUE] (保存して続行) を選択します。

  10. 左のナビゲーションバーを再度展開し、APIs and Services (API とサービス) を選択して、[Credentials] (認証情報) を選択します。

  11. [CREATE CREDENTIALS] (認証情報の作成)、[OAuth client ID] (OAuth クライアント ID) の順に選択します。

  12. [Application type] (アプリケーションタイプ) を選択し、クライアントに [Name] (名前) を入力します。

  13. [Authorized JavaScript origins] (承認済みの JavaScript 生成元) で、[ADD URI] (URI の追加) を選択します。ユーザープールのドメインを入力します。

    https://<your-user-pool-domain>
  14. [Authorized redirect URIs] (承認済みリダイレクト URI) で、[ADD URI] (URI の追加) を選択します。ユーザープールのドメインの /oauth2/idpresponse エンドポイントへのパスを入力します。

    https://<your-user-pool-domain>/oauth2/idpresponse
  15. [CREATE] (作成) を選択します。

  16. [Your client ID] (クライアント ID) と [Your client secret] (クライアントシークレット) の下に Google が表示する値を安全に保存します。Google IdP を追加するときに、Amazon Cognito にこれらの値を指定します。

「Apple でサインイン」を設定する方法についての詳細は、Apple 開発者ドキュメントの「Configuring Your Environment for Sign in with Apple」(Appleでサインインするための環境を設定する) を参照してください。

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

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

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

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

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

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

  7. [Select a type] (種類の選択) ページで、[App] (アプリケーション) を選択し、[Continue] (続行) を選択します。

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

    1. [Description] (説明) で、説明を入力します。

    2. [App ID Prefix] (アプリケーション ID プレフィックス) に、[Bundle ID] (バンドル 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 の設定) ページで、アプリケーションをプライマリとして設定するか、他のアプリケーション ID とグループ化するかを選択し、次に [Save] (保存) を選択します。

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

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

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

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

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

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

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

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

  13. [Identifiers] (識別子) ページから、先ほど作成した [Services ID] (サービス ID) を選択します。

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

    2. [Web Authentication Configuration] (ウェブ認証の設定) ページで、[Primary App ID] (プライマリアプリケーション ID) として前に作成したアプリケーション ID を選択します。

    3. [Website URLs] (ウェブサイトの URL) の横の [+] アイコンを選択します。

    4. [Domains and subdomains] (ドメインとサブドメイン) で、https:// プレフィックスなしでユーザープールのドメインを入力します。

      <your-user-pool-domain>
    5. [Return URLs] (URL を返す) で、ユーザープールのドメインの /oauth2/idpresponse エンドポイントへのパスを入力します。

      https://<your-user-pool-domain>/oauth2/idpresponse
    6. [Next] (次へ) を選択し、[Done] (完了) を選択します。ドメインを検証する必要はありません。

    7. [Continue] (続行) を選択し、次に [Save] (保存) を選択します。

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

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

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

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

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

    3. [Configure Key] (キーの設定) ページで、Primary App ID (プライマリアプリ ID) として前に作成したアプリケーション ID を選択します。[Save] を選択します。

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

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

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

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

Original console

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

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

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

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

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

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

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

    • 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. 設定するソーシャル ID プロバイダーに対して [有効化] を選択します。

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

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

  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 でユーザープールのソーシャル ID プロバイダーを設定するには

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

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

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

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

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

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

    • 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. ID プロバイダーからユーザープールに属性をマッピングします。詳細は、「ユーザープール用 ID プロバイダー属性マッピングの特定」を参照してください。

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

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

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

次のステップ

ステップ 4. SAML ID プロバイダーを使用したサインインをユーザープールに追加する (オプション)