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

Amazon Cognito はユーザーディレクトリであり、OAuth 2.0 ID プロバイダー (IdP) です。Amazon Cognito ディレクトリにネイティブユーザーをサインインさせると、ユーザープールがアプリの 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 トークン、およびリフレッシュトークンを生成します。トークンの詳細については、ユーザープールでのトークンの使用 を参照してください。
フェデレーションまたはネイティブを問わず、ユーザーを認証して承認するために、Amazon Cognito と統合するアプリを設計する必要があります。
Amazon Cognito SP としてのアプリの責任
- トークンの情報を検証して処理する
-
ほとんどのシナリオでは、Amazon Cognito は認証されたユーザーを認証コードを追加したアプリの URL にリダイレクトします。アプリは、アクセス、ID、およびリフレッシュの各トークンとこのコードを交換します。そして、トークンの有効性を確認し、トークン内のクレームに基づいて、ユーザーに情報を提供する必要があります。
- Amazon Cognito API リクエストによる認証イベントへの応答
-
アプリは、Amazon Cognito ユーザープール API と認証 API エンドポイントと統合する必要があります。認証 API は、ユーザーのサインインとサインアウトを行い、トークンを管理します。ユーザープール API には、ユーザープール、ユーザー、および認証環境のセキュリティを管理するさまざまなオペレーションがあります。アプリは。Amazon Cognito からの応答を受信したときに次に何をすべきかを知っている必要があります。
Amazon Cognito ユーザープールサードパーティーサインインについて知っておくべきこと
-
フェデレーションプロバイダーでユーザーにサインインさせたい場合は、ドメインを選択する必要があります。これにより、Amazon Cognito でホストされた UI と ホストされた UI および OIDC エンドポイント が設定されます。詳細については、「ホストされた UI への独自のドメインの使用」を参照してください。
-
InitiateAuth や AdminInitiateAuth のような API オペレーションを使用してフェデレーションユーザーでサインインすることはできません。フェデレーションユーザーは、ログインエンドポイント または 認可エンドポイント でのみサインインできます。
-
認可エンドポイント はリダイレクションエンドポイントです。リクエストに
idp_identifier
またはidentity_provider
パラメータを指定すると、ホストされている UI をバイパスして、IdP に表示せずにリダイレクトされます。それ以外の場合は、ホストされている UI ログインエンドポイント にリダイレクトされます。例については、エンタープライズダッシュボードで Amazon Cognito アプリケーションをブックマークするを参照してください。 -
ホストされた UI がセッションをフェデレーション IdP にリダイレクトすると、Amazon Cognito は、リクエストに
user-agent
ヘッダーAmazon/Cognito
を含めます。 -
Amazon Cognito は、フェデレーションユーザープロファイルの
username
属性を、固定識別子と IdP の名前の組み合わせから派生します。カスタム要件に一致するユーザー名を生成するには、preferred_username
属性へのマッピングを作成します。詳細については、「マッピングについて知っておくべきこと」を参照してください。例:
MyIDP_bob@example.com
-
Amazon Cognito は、フェデレーションユーザーの ID に関する情報を属性および
identities
と呼ばれる ID トークン内のクレームに記録します。このクレームには、ユーザーのプロバイダーと、プロバイダーからの一意の ID が含まれます。ユーザープロファイル内のidentities
属性を直接変更することはできません。フェデレーションユーザーをリンクする方法の詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。 -
UpdateIdentityProviderAPI リクエストで IdP を更新する場合、変更がホスト UI に反映されるまでに最大 1 分かかることがあります。
-
Amazon Cognito は、自身と IdP との間で最大 20 の HTTP リダイレクトをサポートします。
トピック