

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

# ユーザープールによるソーシャル ID プロバイダーの使用
<a name="cognito-user-pools-social-idp"></a>

ウェブおよびモバイルアプリのユーザーは、Facebook、Google、Amazon、Apple などのソーシャル ID プロバイダー (IdP) 経由でサインインできます。組み込みの Hosted Web UI では、Amazon Cognito がすべての認証済みユーザーに関するトークンの処理と管理を提供します。このように、バックエンドシステムは 1 セットのユーザープールトークンで標準化できます。サポートされているソーシャル ID プロバイダーと統合するには、マネージドログインを有効にする必要があります。Amazon Cognito は、マネージドログインページの構築時に OAuth 2.0 エンドポイントを作成します。Amazon Cognito、OIDC IdP、ソーシャル IdP は、このエンドポイントを使用して情報を交換します。詳細については、[Amazon Cognito API リファレンス](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)を参照してください。

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

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

**Topics**
+ [ソーシャル IdP デベロッパーのアカウントとアプリケーションを設定する](#cognito-user-pools-social-idp-step-1)
+ [ソーシャル IdP を使用してユーザープールを設定する](#cognito-user-pools-social-idp-step-2)
+ [ソーシャル IdP の設定をテストする](#cognito-user-pools-social-idp-step-3)

## ソーシャル IdP デベロッパーのアカウントとアプリケーションを設定する
<a name="cognito-user-pools-social-idp-step-1"></a>

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

------
#### [ Facebook ]

Meta デベロッパーのアカウントと認証の設定に関する最新情報については、「[Meta でのアプリ開発](https://developers.facebook.com/docs/development)」を参照してください。

**アプリケーションを Facebook/Meta に登録する方法**

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

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

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

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

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

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

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

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

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

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

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

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

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

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

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

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

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

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

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

------
#### [ Login with Amazon ]

Login with Amazon デベロッパーのアカウントと認証の設定に関する最新情報については、[「Login with Amazon に関するドキュメント](https://developer.amazon.com/docs/login-with-amazon/documentation-overview.html)」を参照してください。

**アプリケーションを Login with Amazon に登録する方法**

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

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

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

   ページの上部にあるナビゲーションバーで [**Apps and Services (アプリとサービス)**] を選択し、[**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://mydomain.auth.us-east-1.amazoncognito.com
   ```

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

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

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

------
#### [ Google ]

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

**アプリケーションを Google に登録する方法**

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. 左のナビゲーションバーで、**[APIs and Services]** (API とサービス) を選択し、**[Oauth consent screen]** (OAuth 同意画面) を選択します。

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

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

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

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

   1. openid

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

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

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

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

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

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com
   ```

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

   ```
   https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
   ```

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

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

------
#### [ Sign in with Apple ]

「Apple でサインイン」の設定に関する最新の情報については、Apple デベロッパー向けドキュメントの「[Apple でサインインの環境を設定する](https://developer.apple.com/documentation/signinwithapple/configuring-your-environment-for-sign-in-with-apple)」を参照してください。

**アプリケーションを Apple でサインイン (SIWA) に登録する方法**

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. **[Select a type]** (種類の選択) ページで、**[App]** (アプリ) を選択し、**[Continue]** (続行) を選択します。

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

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

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

1. [Identifiers] (識別子) ページから、先ほど作成した [Services ID] (サービス 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://` プレフィックスなしでユーザープールのドメインを入力します。

      ```
      mydomain.auth.us-east-1.amazoncognito.com
      ```

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

      ```
      https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/idpresponse
      ```

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

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

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

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

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

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

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

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

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

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

------

## ソーシャル IdP を使用してユーザープールを設定する
<a name="cognito-user-pools-social-idp-step-2"></a>

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

1. [Amazon Cognito コンソール](https://console.aws.amazon.com/cognito/home)に移動します。プロンプトが表示されたら、 AWS 認証情報を入力します。

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

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

1. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択し、**[ID プロバイダーを追加]** を選択します。

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

1. ソーシャル IdP の選択に基づいて、次のステップから選択します。
   + **Google** と **Login 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]** プライベートキーを入力します。

1. 使用したい **[Authorized scopes]** (承認するスコープ) の名前を入力します。スコープは、アプリでアクセスするユーザー属性 (`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/cognito-user-pools-social-idp.html)

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

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

1. IdP からユーザープールに属性をマッピングします。詳細は、「[ユーザープール用 ID プロバイダー属性マッピングの特定](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-user-pools-specifying-attribute-mapping.html)」を参照してください。

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

1. **[アプリケーションクライアント]** メニューで、リストからアプリケーションクライアントを選択します。新しいソーシャル ID プロバイダーをアプリケーションクライアントに追加するには、**[ログインページ]** タブに移動し、**[マネージドログインページの設定]** の **[編集]** を選択します。

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

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

アプリケーションでは、ユーザーのクライアントでブラウザを起動し、ユーザーがソーシャルプロバイダーを使用してサインインできるようにする必要があります。前のセクションのセットアップ手順を完了したら、ソーシャルプロバイダーでのサインインをテストします。次の URL の例では、プレフィックスドメインを持つユーザープールのサインインページをロードします。

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

このリンクは、**[アプリケーションクライアント]** メニューに移動してアプリケーションクライアントを選択し、**[ログインページ]** タブに移動して **[ログインページを表示]** を選択したときに、Amazon Cognito に表示されるページです。ユーザープールドメインの詳細については、「[ユーザープールのドメインを設定する](cognito-user-pools-assign-domain.md)」を参照してください。クライアント ID とコールバック URL など、アプリケーションクライアントの詳細については、「[アプリケーションクライアントによるアプリケーション固有の設定](user-pool-settings-client-apps.md)」を参照してください。

次のリンク例では、`identity_provider` クエリパラメータを使用して、[認可エンドポイント](authorization-endpoint.md)からソーシャルプロバイダーへのサイレントリダイレクトを設定します。この URL は、マネージドログインによるインタラクティブなユーザープールのサインインをバイパスし、IdP サインインページに直接移動します。

```
https://mydomain.auth.us-east-1.amazoncognito.com/oauth2/authorize?identity_provider=Facebook|Google|LoginWithAmazon|SignInWithApple&response_type=code&client_id=1example23456789&redirect_uri=https://www.example.com
```