サードパーティー経由のユーザープールへのサインインの追加 - Amazon Cognito

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

サードパーティー経由のユーザープールへのサインインの追加

アプリユーザーは、ユーザープール経由で直接サインインする、またはサードパーティーの ID プロバイダー (IdP) 経由でフェデレートすることができます。ユーザープールは、Facebook、Google、Amazon、Apple を介したソーシャルサインイン、および OpenID Connect (OIDC) と SAML から返されるトークンの処理オーバーヘッドを管理します IdPs。Amazon Cognito は、ホストされたウェブ UI が組み込まれているため、すべての から認証されたユーザーにトークンの処理と管理を提供します IdPs。このように、バックエンドシステムは 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) に接続すると IdPs、ユーザープールは複数のサービスプロバイダーとアプリ間のブリッジとして機能します。IdP にとって、Amazon Cognito はサービスプロバイダー (SP) です。OIDC ID トークンまたは IdPs 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 のサービスプロバイダーとしてのアプリの責任

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

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

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

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

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

  • フェデレーションプロバイダーでユーザーにサインインさせたい場合は、ドメインを選択する必要があります。これにより、Amazon Cognito でホストされた UI と ホストされた UI および OIDC エンドポイント が設定されます。詳細については、「ホストされた UI への独自のドメインの使用」を参照してください。

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

  • 認可エンドポイント はリダイレクションエンドポイントです。リクエストに 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 属性を直接変更することはできません。フェデレーションユーザーをリンクする方法の詳細については、「フェデレーションユーザーを既存のユーザープロファイルにリンクする」を参照してください。

  • UpdateIdentityProvider API リクエストで IdP を更新する場合、変更がホスト UI に反映されるまでに最長で 1 分かかることがあります。

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

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

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