

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# ユーザープールにソーシャルサインインを追加する
<a name="tutorial-create-user-pool-social-idp"></a>

既存のパブリック ID プロバイダーまたはソーシャル ID プロバイダーを通じてアプリケーションにサインインする機能をユーザーに提供することで、認証エクスペリエンスを改善できます。Amazon Cognito ユーザープールは、Facebook、Google、Amazon、Apple などの一般的なソーシャル ID プロバイダー (IdP) と統合され、ユーザーが既に使い慣れている便利なサインインオプションを提供します。

ソーシャルサインインを設定すると、アプリケーション専用のアカウントを作成する代わりのサインインをユーザーが使用できるようになります。これにより、変換率が向上し、サインアッププロセスが一層シームレスになります。ユーザーの視点から見ると、別のユーザー名とパスワードを記憶しておく手間なく、既存のソーシャル認証情報を適用してすばやく認証できます。

ユーザープールでソーシャル IdP を設定するには、いくつかの重要なステップが必要です。クライアント ID とシークレットを取得するには、アプリケーションをソーシャルプロバイダーに登録する必要があります。次に、ソーシャル IdP 設定をユーザープールに追加し、リクエストするスコープと、IdP 属性からマッピングするユーザープール属性を指定できます。実行時に、Amazon Cognito はプロバイダーとのトークン交換を処理し、ユーザー属性をマッピングし、共有ユーザープール形式でアプリケーションにトークンを発行します。

## ソーシャル IdP に登録する
<a name="cognito-user-pools-social-step-1"></a>

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

### アプリケーションを Facebook に登録する
<a name="register-an-app-with-facebook"></a>

1. [Facebook の開発者アカウント](https://developers.facebook.com/docs/facebook-login)を作成します。

1. Facebook 認証情報を使用して[サインイン](https://developers.facebook.com/)します。

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

   既存の Facebook アプリケーションがない場合は、別のオプションが表示されます。[**Create App (アプリの作成)**] を選択します。

1. **[アプリの作成]** ページで、アプリのユースケースを選択し、**[次へ]** を選択します。

1. Facebook アプリケーションに名前を入力して、**[アプリの作成]** を選択します。

1. 左のナビゲーションバーで、**[設定]**、**[基本]** の順に選択します。

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

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

1. **[プラットフォームの選択]** 画面で、プラットフォームを選択し、**[次へ]** を選択します。

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

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

   ```
   https://your_user_pool_domain
   ```

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

1. ナビゲーションバーで **[製品]** を選択し、**[Facebook でログイン]** の　**[設定]** を選択します。

1. **[Facebook でログイン]** の **[設定]** メニューから **[設定]** を選択します。

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

   ```
   https://your_user_pool_domain/oauth2/idpresponse
   ```

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

### アプリケーションを Amazon に登録する
<a name="register-an-app-with-amazon"></a>

1. [Amazon の開発者アカウント](https://developer.amazon.com/login-with-amazon)を作成します。

1. Amazon 認証情報を使用して[サインイン](https://developer.amazon.com/lwa/sp/overview.html)します。

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

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

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

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

1. **[保存]** を選択します。

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

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

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

   ```
   https://<your-user-pool-domain>
   ```

1. `/oauth2/idpresponse` エンドポイントを使用するユーザープールドメインを [**Allowed Return URLs**] (許可されたリターン URL) に入力します。

   ```
   https://<your-user-pool-domain>/oauth2/idpresponse
   ```

1. **[保存]** を選択します。

### アプリケーションを Google に登録する
<a name="register-an-app-with-google"></a>

Google Cloud プラットフォームの OAuth 2.0 の詳細については、「Google Workspace デベロッパーガイド」ドキュメントの「[認証と認可の詳細](https://developers.google.com/workspace/guides/auth-overview)」を参照してください。

1. [Google の開発者アカウント](https://developers.google.com/identity)を作成します。

1. [Google Cloud Platform コンソール](https://console.cloud.google.com/home/dashboard)にサインインします。

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

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

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

1. 左のナビゲーションバーで、**[API とサービス]** を選択し、**[OAuth 同意画面]** を選択します。

1. アプリケーション情報である **[アプリケーションドメイン]**、**[認可済みドメイン]**、**[デベロッパーの連絡先情報]** を入力します。**[認可済みドメイン]** には、`amazoncognito.com` とカスタムドメインのルートを含める必要があります。例: `example.com`。**[SAVE AND CONTINUE]** (保存して続行) を選択します。

1. 1. **[スコープ]** で、**[スコープの追加または削除]** を選択し、少なくとも、次の OAuth スコープを選択します。

   1. `.../auth/userinfo.email`

   1. `.../auth/userinfo.profile`

   1. openid

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

1. 左のナビゲーションバーを再度展開し、**[API とサービス]** を選択して、**[認証情報]** を選択します。

1. **[認証情報の作成]**、**[OAuth クライアント ID]** の順に選択します。

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

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

   ```
   https://<your-user-pool-domain>
   ```

1. **[Authorized redirect URIs]** (承認済みのリダイレクト URI) で、**[ADD URI]** (URI の追加) を選択します。ユーザープールのドメインの `/oauth2/idpresponse` エンドポイントへのパスを入力します。

   ```
   https://<your-user-pool-domain>/oauth2/idpresponse
   ```

1. **[作成]** を選択します。

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

### アプリケーションを Apple に登録する
<a name="register-an-app-with-apple"></a>

「Apple でサインイン」を設定する方法についての詳細は、Apple 開発者ドキュメントの「[Configuring Your Environment for Sign in with Apple](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple)」(Apple でサインインするための環境を設定する) を参照してください。

1. [Apple の開発者アカウント](https://developer.apple.com/programs/enroll/)を作成します。

1. Apple 認証情報を使用して[サインイン](https://developer.apple.com/account/#/welcome)します。

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

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

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

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

1. **[種類の選択]** ページで、**[アプリケーション]** を選択し、**[続行]** を選択します。

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

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

   1. **[App ID Prefix]** (アプリ ID プレフィックス) に、**[Bundle ID]** (バンドル ID) を入力します。**[App ID Prefix]** (アプリケーション ID プレフィックス) にある値を書き留めておきます。この値は、[ソーシャル IdP を使用してユーザープールを設定する](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2) で Apple を ID プロバイダーとして選択した後で使用します。

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

   1. **[Sign in with Apple: App ID Configuration]** (Apple でサインイン: アプリ ID の設定) ページで、アプリをプライマリとして設定するか、他のアプリ ID とグループ化するかを選択し、次に **[Save]** (保存) を選択します。

   1. [**続行**] をクリックしてください。

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

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

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

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

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

   1. **[Identifier]** (識別子) で、識別子を入力します。このサービス ID をメモしておきます。この値が、[ソーシャル IdP を使用してユーザープールを設定する](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2) で Apple を ID プロバイダーとして選択した後で必要になるからです。

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

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

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

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

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

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

      ```
      <your-user-pool-domain>
      ```

   1. **[Return URLs]** (URL を返す) で、ユーザープールのドメインの `/oauth2/idpresponse` エンドポイントへのパスを入力します。

      ```
      https://<your-user-pool-domain>/oauth2/idpresponse
      ```

   1. **[次へ]** を選択してから、**[完了]** を選択します。ドメインを検証する必要はありません。

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

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

1. [**Keys (キー)**] ページで、[**\$1**] アイコンを選択します。

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

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

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

   1. **[キーの設定]** ページで、**[プライマリアプリケーション ID]** として前に作成したアプリケーション ID を選択します。**[保存]** を選択します。

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

1. **[キーをダウンロード]** ページで、**[ダウンロード]** をクリックしてプライベートキーをダウンロードしてから、表示される **[キー ID]** を書き留め、**[完了]** を選択します。このプライベートキーと、このページに表示されている **[Key ID]** (キー ID) の値は、[ソーシャル IdP を使用してユーザープールを設定する](cognito-user-pools-social-idp.md#cognito-user-pools-social-idp-step-2) で Apple を ID プロバイダーとして選択した後で必要になります。

## ユーザープールにソーシャル IdP を追加する
<a name="cognito-user-pools-social-step-2"></a>

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

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

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)に移動します。 AWS 認証情報の入力を求められる場合があります。

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

1. リストから既存のユーザープールを選択するか、[ユーザープールを作成](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pool-as-user-directory.html)します。

1. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択します。**[Federated sign-in]** (フェデレーションサインイン) を検索し、**[Add an identity provider]** (ID プロバイダーの追加) を選択します。

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

1. ソーシャル ID プロバイダーの選択に基づいて、次のステップから選択します。
   + **Google** と **Login with Amazon** — 前のセクションで生成された **[アプリケーションクライアント ID]** と **[アプリケーションクライアントのシークレット]** を入力します。
   + **Facebook** — 前のセクションで生成された **[アプリケーションクライアント ID]** と **[アプリケーションクライアントのシークレット]** を入力し、API バージョン (例えば、バージョン 2.12) を選択します。Facebook API の各バージョンにはライフサイクルとサポート終了日があるため、可能な限り最新のバージョンを選択することをお勧めします。Facebook のスコープと属性は API バージョンによって異なる場合があります。Facebook でソーシャル ID ログインをテストして、フェデレーションが意図したとおりに機能することを確認することをお勧めします。
   + **Sign in with Apple** — 以前のセクションで生成された **[サービス ID]**、**[チーム ID]**、**[キー ID]** および **[プライベートキー]** を入力します。

1. 使用する **[認可済みスコープ]** の名前を入力します。スコープは、アプリでアクセスするユーザー属性 (`name` や `email` など) を定義します。Facebook の場合は、コンマで区切る必要があります。Google および Login with Amazon の場合は、スペースで区切って指定します。Sign in with Apple の場合は、アクセスするスコープのチェックボックスをオンにします。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/tutorial-create-user-pool-social-idp.html)

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

   以下は、Sign in with Apple の場合にスコープが返らない可能性があるユーザーシナリオです。
   + エンドユーザーが Apple のサインインページを離れるとエラーが発生する (Amazon Cognito の内部障害またはデベロッパーが記述したプログラムが原因である可能性があります)。
   + サービス ID 識別子がユーザープールや他の認証サービス全体で使用されている。
   + ユーザーがサインインした後に、デベロッパーがスコープを追加している。ユーザーは認証時およびトークンの更新時にのみ、新しい情報を取得する。
   + デベロッパーによって削除されたユーザーが Apple ID プロファイルからアプリケーションを削除せずに再度サインインしている。

1. ID プロバイダーからユーザープールに属性をマッピングします。詳細については、「[マッピングについて知っておくべきこと](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping-requirements)」を参照してください。

1. **[作成]** を選択します。

1. **[アプリケーションクライアント]** メニューで、リストのアプリケーションクライアントから 1 つを選択し、**[ホストされた UI 設定の編集]** を選択します。**[Identity providers]** (ID プロバイダー) で、新しいソーシャル ID プロバイダーをアプリケーションクライアントに追加します。

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

## ソーシャル IdP の設定をテストする
<a name="cognito-user-pools-social-step-3"></a>

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

```
https://mydomain.auth.us-east-1.amazoncognito.com/login?response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```

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

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