

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

# ユーザープールの ID プロバイダーの設定
<a name="cognito-user-pools-identity-provider"></a>

ユーザープールを使用すると、さまざまな外部 ID プロバイダー (IdP) を通じてサインインを実装できます。ガイドのこのセクションには、Amazon Cognito コンソールでユーザープールを使用してこれらの ID プロバイダーを設定する手順が記載されています。または、ユーザープール API と AWS SDK を使用して、ユーザープール ID プロバイダーをプログラムで追加することもできます。詳細については、「[CreateIdentityProvider](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_CreateIdentityProvider.html)」を参照してください。

サポートされている ID プロバイダーのオプションには、Facebook、Google、Amazon などのソーシャルプロバイダー、OpenID Connect (OIDC)、SAML 2.0 プロバイダーなどがあります。開始する前に、IdP の管理認証情報を設定します。プロバイダーのタイプごとに、アプリケーションの登録、必要な認証情報の取得、ユーザープールでのプロバイダーの詳細の設定を行う必要があります。その後、ユーザーは、接続された ID プロバイダーの既存アカウントを使用して、アプリケーションへのサインアップとサインインができます。

**[認証]** の下にある **[ソーシャルプロバイダーと外部プロバイダー]** メニューで、ユーザープールの IdP を追加および更新します。詳細については、「[サードパーティーの ID プロバイダーを使用したユーザープールへのサインイン](cognito-user-pools-identity-federation.md)」を参照してください。

**Topics**
+ [ソーシャル IdP でユーザーサインインを設定する](#cognito-user-pools-facebook-provider)
+ [OIDC IdP でユーザーサインインを設定する](#cognito-user-pools-oidc-providers)
+ [SAML IdP でユーザーサインインを設定する](#cognito-user-pools-saml-providers)

## ソーシャル IdP でユーザーサインインを設定する
<a name="cognito-user-pools-facebook-provider"></a>

フェデレーションを使用して、Amazon Cognito のユーザープールを Facebook、Google、Login with Amazon などのソーシャル ID プロバイダーと統合することができます。

ソーシャル ID プロバイダーを追加するには、最初に ID プロバイダーでデベロッパーアカウントを作成します。デベロッパーアカウントが作成されたら、アプリを ID プロバイダーに登録します。ID プロバイダーがアプリ用のアプリ ID とアプリシークレットを作成するので、これらの値を Amazon Cognito ユーザープールで設定します。
+ [Google Identity Platform](https://developers.google.com/identity/)
+ [Facebook for Developers](https://developers.facebook.com/docs/facebook-login)
+ [Login with Amazon](https://developer.amazon.com/login-with-amazon)
+ [Apple でサインイン](https://developer.apple.com/sign-in-with-apple/)

**ユーザーサインインとソーシャル IdP を統合するには**

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

1. ナビゲーションペインで **[User Pools]** (ユーザープール) を選択してから、編集するユーザープールを選択します。

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

1. **[Add an identity provider]** (ID プロバイダーを追加する) を選択、または、設定した **[Facebook]**、**[Google]**、**[Amazon]**、または **[Apple]** などを選択し、**[Identity provider information]** (ID プロバイダー情報) を検索し、**[Edit]** (編集) をクリックします。ソーシャル ID プロバイダーの追加の詳細については、「[ユーザープールによるソーシャル ID プロバイダーの使用](cognito-user-pools-social-idp.md)」を参照してください。

1. 選択した IdP に基づいて、次のいずれかの手順を実行して、ソーシャル ID プロバイダーの情報を入力します。  
**Facebook、Google、および Login with Amazon**  
クライアントアプリを作成したときに受け取ったアプリ ID とアプリシークレットを入力します。  
**Apple でサインイン**  
Apple に提供したサービス ID、およびアプリケーションクライアントを作成したときに受け取ったチーム ID、キー ID、プライベートキーを入力します。

1. **[Authorize scopes]** (承認スコープ) に、ユーザープール属性にマップするソーシャル ID プロバイダースコープの名前を入力します。スコープは、アプリケーションでアクセスするユーザー属性 (名前や E メールなど) を定義します。スコープを入力するときは、選択した IdP に基づいて、次のガイドラインに従ってください。
   + **Facebook** — スコープはカンマで区切ります。例:

     `public_profile, email`
   + **Google、Login with Amazon、Sign in with Apple** — スコープをスペースで区切ります。例:
     + **Google:** `profile email openid`
     + **Login with Amazon:** `profile postal_code`
     + **Sign In with Apple:** `name email`
**注記**  
Sign in with Apple (コンソール) の場合は、チェックボックスを使用してスコープを選択します。

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

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

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

ソーシャル IdP の詳細については、「[ユーザープールによるソーシャル ID プロバイダーの使用](cognito-user-pools-social-idp.md)」を参照してください。

## OIDC IdP でユーザーサインインを設定する
<a name="cognito-user-pools-oidc-providers"></a>

Salesforce や Ping Identity などの OpenID Connect (OIDC) ID プロバイダーとユーザーサインインを統合することができます。

**OIDC プロバイダーをユーザープールに追加するには**

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. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択し、**[ID プロバイダーを追加]** を選択します。

1. **[OpenID Connect]** (OpenID 接続) ID プロバイダーを選択します。

1. [**Provider name**] (プロバイダー名) に一意の名前を入力します。

1. プロバイダーから受け取ったクライアント ID を、**[Client ID]** (クライアント ID) へ入力します。

1. プロバイダーから受け取ったクライアントシークレットを、**[Client secret]** (クライアントシークレット) に入力します。

1. このプロバイダーの **[Authorized scopes]** (承認済みスコープ) を入力します。スコープは、アプリケーションがプロバイダーにリクエストするユーザー属性のグループ (`name` および `email` など) を定義します。[OAuth 2.0](https://tools.ietf.org/html/rfc6749#section-3.3) 仕様に従い、スコープはスペースで区切る必要があります。

   ユーザーはこれらの属性をアプリケーションに提供することに同意する必要があります。

1. **[Attribute request method]** (属性リクエストメソッド) を選択して、プロバイダーが操作する **[userInfo]** エンドポイントからユーザーの詳細をフェッチするために必要な HTTP メソッド（GET または POST）を Amazon Cognito に提供します。

1. **[Setup method]** (セットアップ方法) を選択して、OpenID Connect エンドポイントを、**[Auto fill through issuer URL]** (発行者 URL による自動入力) または **[Manual input]** (手動入力) で取得します。**[発行者 URL を通じた自動入力]** は、プロバイダーにパブリック `.well-known/openid-configuration` エンドポイントがあり、これを通じて Amazon Cognito が `authorization`、`token`、`userInfo`、`jwks_uri` エンドポイントの URL を取得できる場合に使用します。

1. 発行者の URL、または IdP からの `authorization`、`token`、`userInfo`、および `jwks_uri` エンドポイントの URL を入力します。
**注記**  
検出、自動入力、および手動で入力された URL には、ポート番号 443 と 80 のみを使用できます。OIDC プロバイダーが標準外の TCP ポートを使用している場合、ユーザーログインは失敗します。  
発行者の URL は `https://` で始まる必要があり、`/` 文字で終わらせることはできません。例えば、Salesforce では次の URL を使用します。  
`https://login.salesforce.com`   
発行者 URL に関連付けられている `openid-configuration` ドキュメントには、次の値の HTTPS URL を指定する必要があります: `authorization_endpoint`、`token_endpoint`、`userinfo_endpoint`、および `jwks_uri`。同様に、**[Manual input]** (手動入力) を選択する場合は、HTTPS URL のみを入力できます。

1. デフォルトで、OIDC クレームの **[sub]** (サブ) はユーザープール属性の **[Username]** (ユーザーネーム) にマッピングされます。他の OIDC [クレーム](https://openid.net/specs/openid-connect-basic-1_0.html#StandardClaims)をユーザープール属性にマッピングできます。OIDC クレームを入力し、対応するユーザープール属性をドロップダウンリストから選択します。例えば、通常、クレームの [**email**] はユーザープール属性の [**E メール**] にマッピングされます。

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

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

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

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

OIDC IdPs の詳細については、「[ユーザープールでの OIDC ID プロバイダーの使用](cognito-user-pools-oidc-idp.md)」を参照してください。

## SAML IdP でユーザーサインインを設定する
<a name="cognito-user-pools-saml-providers"></a>

Amazon Cognito ユーザープールのフェデレーションを使用して、SAML ID プロバイダー (IdP) と統合することができます。メタデータドキュメントを指定します。ファイルをアップロードするか、メタデータドキュメントのエンドポイント URL を入力します。サードパーティーの SAML IdP のメタデータドキュメントの取得については、「[サードパーティー SAML ID プロバイダーの設定](cognito-user-pools-integrating-3rd-party-saml-providers.md)」を参照してください。

**ユーザープールに SAML 2.0 ID プロバイダーを設定する**

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. **[ソーシャルプロバイダーと外部プロバイダー]** メニューを選択し、**[ID プロバイダーを追加]** を選択します。

1. **[SAML]** ID プロバイダーを選択します。

1. カンマで区切られた **[Identifiers]** (識別子) を入力します。識別子は Amazon Cognito に、ユーザーのサインイン E メールアドレスを確認し、ドメインに対応するプロバイダーに誘導する必要があることを伝えます。

1. ユーザーがログアウトしたときに、Amazon Cognito が署名されたサインアウト要求をプロバイダーに送信するためには、**[Add sign-out flow]** (サインアウトフローの追加) を選択します。マネージドログインの設定時に Amazon Cognito で作成した `https://mydomain.auth.us-east-1.amazoncognito.com/saml2/logout` エンドポイントにサインアウトレスポンスを送信するように、SAML 2.0 ID プロバイダーを設定します。`saml2/logout` エンドポイントでは、ポストバインディングを使用します。
**注記**  
このオプションを選択し、SAML ID プロバイダーが署名付きログアウトリクエストを期待する場合は、SAML IdP で Amazon Cognito が提供する署名証明書を設定する必要もあります。  
SAML IdP は署名されたログアウトリクエストを処理し、Amazon Cognito セッションからユーザーをログアウトさせます。

1. **[Metadata document source]** (メタデータドキュメントソース) を選択します。ID プロバイダーがパブリック URL で SAML メタデータを提供する場合は、**[Metadata document URL]** (メタデータドキュメント URL) を選択してそのパブリック URL を入力できます。それ以外の場合は、**[Upload metadata document]** (メタデータドキュメントをアップロード) を選択し、プロバイダーから以前ダウンロードしたメタデータファイルを選択します。
**注記**  
プロバイダーにパブリックエンドポイントがある場合は、ファイルをアップロードするのではなく、メタデータドキュメントの URL を入力することをお勧めします。URL を使用する場合、Amazon Cognito はメタデータを自動的に更新します。通常、メタデータの更新は 6 時間ごとまたはメタデータの有効期限が切れる前のいずれか早いタイミングで発生します。

1. **[Map attributes between your SAML provider and your app]** (SAML プロバイダーとアプリ間で属性をマッピング) をクリックして、SAML プロバイダーの属性をユーザープールのユーザープロファイルにマッピングします。ユーザープールの必須属性を属性マップに含めます。

   たとえば、**[User pool attribute]** (ユーザープール属性) `email` を選択する場合、ID プロバイダーからの SAML アサーションに表示される SAML 属性名を入力します。ID プロバイダーは、参考として SAML アサーションのサンプルを提供する場合があります。ID プロバイダーの中には、`email` などの単純な名前を使用するものもあれば、次のような URL 形式の属性名を使用するものもあります。

   ```
   http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress
   ```

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

**注記**  
HTTPS メタデータエンドポイント URL を使用して SAML IdP を作成中に `InvalidParameterException` が表示される場合、メタデータエンドポイントの SSL が正しくセットアップされていること、および有効な SSL 証明書が関連付けられていることを確認してください。このような例外の例として、「Error retrieving metadata from *<metadata endpoint>*」が挙げられます。

**署名証明書を追加するために SAML IdP をセットアップする**
+ IdP が署名付きログアウトリクエストの検証に使用するパブリックキーを含む証明書を取得するには、次の手順を実行します。

  1. ユーザープールの **[ソーシャルプロバイダーと外部プロバイダー]** メニューに移動します。

  1. SAML プロバイダーを選択します。

  1. **[署名証明書を表示]** を選択します。

SAML IdP の詳細については、「[ユーザープールによる SAML ID プロバイダーの使用](cognito-user-pools-saml-idp.md)」を参照してください。