サードパーティーの ID プロバイダーを使用したユーザープールへのサインイン - Amazon Cognito

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

サードパーティーの ID プロバイダーを使用したユーザープールへのサインイン

アプリケーションユーザーは、ユーザープール経由で直接サインインするか、またはサードパーティーの 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 になります。ローカルユーザーは、外部 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 と統合するアプリを設計する必要があります。

Amazon Cognito のサービスプロバイダーとしてのアプリの責任

トークンの情報を検証して処理する

ほとんどのシナリオでは、Amazon Cognito は認証されたユーザーを、認可コードを追加したアプリの URL にリダイレクトします。アプリは、アクセス、ID、およびリフレッシュの各トークンとこのコードを交換します。そして、トークンの有効性を確認し、トークン内のクレームに基づいて、ユーザーに情報を提供する必要があります。

Amazon Cognito API リクエストによる認証イベントへの応答

アプリは、Amazon Cognito ユーザープール API認証 API エンドポイントと統合する必要があります。認証 API は、ユーザーのサインインとサインアウトを行い、トークンを管理します。ユーザープール API には、ユーザープール、ユーザー、および認証環境のセキュリティを管理するさまざまなオペレーションがあります。アプリは。Amazon Cognito からの応答を受信したときに次に何をすべきかを知っている必要があります。

Amazon Cognito ユーザープールサードパーティーサインインについて知っておくべきこと

  • フェデレーションプロバイダーでユーザーにサインインさせたい場合は、ドメインを選択する必要があります。これにより、マネージドログイン用のページが設定されます。詳細については、「マネージドログインに独自のドメインを使用する」を参照してください。

  • InitiateAuthAdminInitiateAuth のような API オペレーションを使用してフェデレーションユーザーでサインインすることはできません。フェデレーションユーザーは、ログインエンドポイント または 認可エンドポイント でのみサインインできます。

  • 認可エンドポイント はリダイレクションエンドポイントです。リクエストに idp_identifier パラメータまたは identity_provider パラメータを指定すると、マネージドログインをバイパスして、IdP にサイレントにリダイレクトされます。それ以外の場合は、マネージドログインのログインエンドポイントにリダイレクトされます。

  • マネージドログインがセッションをフェデレーティッド IdP にリダイレクトすると、Amazon Cognito は、Amazon/Cognito リクエストに user-agent ヘッダーを含めます。

  • Amazon Cognito は、フェデレーションユーザープロファイルの username 属性を、固定識別子と IdP の名前の組み合わせから派生します。カスタム要件に一致するユーザー名を生成するには、preferred_username 属性へのマッピングを作成します。詳細については、「マッピングについて知っておくべきこと」を参照してください。

    例: MyIDP_bob@example.com

  • Amazon Cognito は、ユーザープールに追加する OIDC、SAMl、ソーシャル IdP ごとにユーザーグループを作成します。グループ名の形式は [user pool ID]_[IdP name] です (例: us-east-1_EXAMPLE_MYSSOus-east-1_EXAMPLE_Google)。自動生成された一意の各 IdP ユーザープロファイルは、このグループに自動的に追加されます。リンクされたユーザーは、このグループに自動的に追加されませんが、そのプロファイルを別のプロセスでグループに追加できます。

  • Amazon Cognito は、フェデレーションユーザーの ID に関する情報を属性および identities と呼ばれる ID トークン内のクレームに記録します。このクレームには、ユーザーのプロバイダーと、プロバイダーからの一意の ID が含まれます。ユーザープロファイル内の identities 属性を直接変更することはできません。フェデレーションユーザーをリンクする方法の詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。

  • UpdateIdentityProvider API リクエストで IdP を更新する場合、変更がマネージドログインに反映されるまでに最大で 1 分かかることがあります。

  • Amazon Cognito は、自身と IdP との間で最大 20 の HTTP リダイレクトをサポートします。

  • ユーザーがマネージドログインを使用してサインインすると、ブラウザは、暗号化されたログインセッション Cookie を保存することで、サインインに使用したクライアントとプロバイダーを記録します。ユーザーが同じパラメータを使用して再度サインインしようとすると、マネージドログインは有効期限が切れていない既存のセッションをすべて再利用するため、ユーザーは認証情報を再入力することなく認証されます。ローカルユーザープールログインへの切り替えやローカルユーザープールログインからの切り替えなど、ユーザーが別の IdP で再度ログインする場合は、認証情報を入力して新しいログインセッションを生成する必要があります。

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