

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

# サードパーティーの ID プロバイダーを使用したユーザープールへのサインイン
<a name="cognito-user-pools-identity-federation"></a>

アプリケーションユーザーは、ユーザープール経由で直接サインインするか、またはサードパーティーの ID プロバイダー (IdP) 経由でフェデレーション方式で認証を行うことができます。ユーザープールは、Facebook、Google、Amazon、Apple 経由のソーシャルサインイン、および OpenID Connect (OIDC) と SAML IdP から返されるトークンの処理のオーバーヘッドを管理します。組み込みの Hosted Web UI では、Amazon Cognito がすべての認証済みユーザーに関するトークンの処理と管理を提供します。このように、バックエンドシステムは 1 セットのユーザープールトークンで標準化できます。

## Amazon Cognito ユーザープールでのフェデレーションサインインの仕組み
<a name="cognito-user-pools-identity-federation-how-it-works"></a>

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

![ソーシャルサインインの認証の概要](http://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/images/scenario-authentication-cup.png)


Amazon Cognito はユーザーディレクトリであり、OAuth 2.0 ID プロバイダー (IdP) です。Amazon Cognito ディレクトリに*ローカルユーザー*をサインインさせると、ユーザープールがアプリの IdP になります。ローカルユーザーは、外部 IdP を介したフェデレーションなしに、ユーザープールディレクトリにのみ存在します。

Amazon Cognito をソーシャル、SAML、または OpenID Connect (OIDC) IdP に接続すると、ユーザープールは複数のサービスプロバイダーとアプリ間のブリッジとして機能します。IdP にとって、Amazon Cognito はサービスプロバイダー (SP) です。IdP は、OIDC ID トークンまたは SAML アサーションを Amazon Cognito に渡します。Amazon Cognito は、トークンまたはアサーション内のユーザーに関するクレームを読み取り、それらのクレームをユーザープールディレクトリ内の新しいユーザープロファイルにマッピングします。

Amazon Cognito は、フェデレーションユーザーのユーザープロファイルを独自のディレクトリに作成します。Amazon Cognito は、IdP からのクレームと、OIDC およびソーシャル ID プロバイダーの場合は、IdP によるパブリック `userinfo` エンドポイントに基づいて、ユーザーに属性を追加します。マッピングされた IdP 属性が変更されると、ユーザーの属性はユーザープール内で変化します。さらに、IdP の属性から独立した属性を追加することもできます。

Amazon Cognito がフェデレーションユーザーのプロファイルを作成すると、その機能が変更され、SP となったアプリに IdP として表示されます。Amazon Cognito は OIDC と OAuth 2.0 IdP の組み合わせです。アクセストークン、ID トークン、およびリフレッシュトークンを生成します。トークンの詳細については、[ユーザープール JSON ウェブトークン (JWT) の理解](amazon-cognito-user-pools-using-tokens-with-identity-providers.md) を参照してください。

フェデレーションまたはローカルを問わず、ユーザーを認証して認可するために、Amazon Cognito と統合するアプリを設計する必要があります。

## Amazon Cognito のサービスプロバイダーとしてのアプリの責任
<a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a><a name="cognito-user-pools-identity-federation-how-it-works-app-responsibilities"></a>

**トークンの情報を検証して処理する**  
ほとんどのシナリオでは、Amazon Cognito は認証されたユーザーを、認可コードを追加したアプリの URL にリダイレクトします。アプリは、アクセス、ID、およびリフレッシュの各トークンと[このコードを交換](https://docs.aws.amazon.com/cognito/latest/developerguide/token-endpoint.html)します。そして、[トークンの有効性を確認](https://docs.aws.amazon.com/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt.html)し、トークン内のクレームに基づいて、ユーザーに情報を提供する必要があります。

**Amazon Cognito API リクエストによる認証イベントへの応答**  
アプリは、[Amazon Cognito ユーザープール API](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/Welcome.html) と[認証 API エンドポイント](https://docs.aws.amazon.com/cognito/latest/developerguide/cognito-userpools-server-contract-reference.html)と統合する必要があります。認証 API は、ユーザーのサインインとサインアウトを行い、トークンを管理します。ユーザープール API には、ユーザープール、ユーザー、および認証環境のセキュリティを管理するさまざまなオペレーションがあります。アプリは。Amazon Cognito からの応答を受信したときに次に何をすべきかを知っている必要があります。

## Amazon Cognito ユーザープールサードパーティーサインインについて知っておくべきこと
<a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a><a name="cognito-user-pools-identity-federation-how-it-works-considerations"></a>
+ フェデレーションプロバイダーでユーザーにサインインさせたい場合は、ドメインを選択する必要があります。これにより、[マネージドログイン](cognito-userpools-server-contract-reference.md)用のページが設定されます。詳細については、「[マネージドログインに独自のドメインを使用する](cognito-user-pools-add-custom-domain.md)」を参照してください。
+ [InitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_InitiateAuth.html) や [AdminInitiateAuth](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_AdminInitiateAuth.html) のような API オペレーションを使用してフェデレーションユーザーでサインインすることはできません。フェデレーションユーザーは、[ログインエンドポイント](login-endpoint.md) または [認可エンドポイント](authorization-endpoint.md) でのみサインインできます。
+ [認可エンドポイント](authorization-endpoint.md) はリダイレクションエンドポイントです。リクエストに `idp_identifier` パラメータまたは `identity_provider` パラメータを指定すると、マネージドログインをバイパスして、IdP にサイレントにリダイレクトされます。それ以外の場合は、マネージドログインの[ログインエンドポイント](login-endpoint.md)にリダイレクトされます。
+ マネージドログインがセッションをフェデレーティッド IdP にリダイレクトすると、Amazon Cognito は、`Amazon/Cognito` リクエストに `user-agent` ヘッダーを含めます。
+ Amazon Cognito は、フェデレーションユーザープロファイルの `username` 属性を、固定識別子と IdP の名前の組み合わせから派生します。カスタム要件に一致するユーザー名を生成するには、`preferred_username` 属性へのマッピングを作成します。詳細については、「[マッピングについて知っておくべきこと](cognito-user-pools-specifying-attribute-mapping.md#cognito-user-pools-specifying-attribute-mapping-requirements)」を参照してください。

  例: `MyIDP_bob@example.com`
+ Amazon Cognito は、ユーザープールに追加する OIDC、SAMl、ソーシャル IdP ごとに[ユーザーグループ](cognito-user-pools-user-groups.md)を作成します。グループ名の形式は `[user pool ID]_[IdP name]` です (例: `us-east-1_EXAMPLE_MYSSO`、`us-east-1_EXAMPLE_Google`)。自動生成された一意の各 IdP ユーザープロファイルは、このグループに自動的に追加されます。[リンクされたユーザー](cognito-user-pools-identity-federation-consolidate-users.md)は、このグループに自動的に追加されませんが、そのプロファイルを別のプロセスでグループに追加できます。
+ Amazon Cognito は、フェデレーションユーザーの ID に関する情報を属性および `identities` と呼ばれる ID トークン内のクレームに記録します。このクレームには、ユーザーのプロバイダーと、プロバイダーからの一意の ID が含まれます。ユーザープロファイル内の `identities` 属性を直接変更することはできません。フェデレーションユーザーをリンクする方法の詳細については、「[フェデレーションユーザーを既存のユーザープロファイルにリンクする](cognito-user-pools-identity-federation-consolidate-users.md)」を参照してください。
+ [https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html](https://docs.aws.amazon.com/cognito-user-identity-pools/latest/APIReference/API_UpdateIdentityProvider.html) API リクエストで IdP を更新する場合、変更がマネージドログインに反映されるまでに最大で 1 分かかることがあります。
+ Amazon Cognito は、自身と IdP との間で最大 20 の HTTP リダイレクトをサポートします。
+ ユーザーがマネージドログインを使用してサインインすると、ブラウザは、暗号化されたログインセッション Cookie を保存することで、サインインに使用したクライアントとプロバイダーを記録します。ユーザーが同じパラメータを使用して再度サインインしようとすると、マネージドログインは*有効期限が切れていない*既存のセッションをすべて再利用するため、ユーザーは認証情報を再入力することなく認証されます。ローカルユーザープールログインへの切り替えやローカルユーザープールログインからの切り替えなど、ユーザーが別の IdP で再度ログインする場合は、認証情報を入力して新しいログインセッションを生成する必要があります。

  ユーザープール IdPs は任意のアプリクライアントに割り当てることができ、ユーザーはアプリクライアントに割り当てた IdP でのみサインインできます。

**Topics**
+ [Amazon Cognito ユーザープールでのフェデレーションサインインの仕組み](#cognito-user-pools-identity-federation-how-it-works)
+ [Amazon Cognito のサービスプロバイダーとしてのアプリの責任](#cognito-user-pools-identity-federation-how-it-works-app-responsibilities)
+ [Amazon Cognito ユーザープールサードパーティーサインインについて知っておくべきこと](#cognito-user-pools-identity-federation-how-it-works-considerations)
+ [ユーザープールの ID プロバイダーの設定](cognito-user-pools-identity-provider.md)
+ [ユーザープールによるソーシャル ID プロバイダーの使用](cognito-user-pools-social-idp.md)
+ [ユーザープールによる SAML ID プロバイダーの使用](cognito-user-pools-saml-idp.md)
+ [ユーザープールでの OIDC ID プロバイダーの使用](cognito-user-pools-oidc-idp.md)
+ [IdP 属性をプロファイルとトークンにマッピングする](cognito-user-pools-specifying-attribute-mapping.md)
+ [フェデレーションユーザーを既存のユーザープロファイルにリンクする](cognito-user-pools-identity-federation-consolidate-users.md)