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

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

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

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

Amazon Cognito ユーザープールでのフェデレーションサインインの仕組み

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

ソーシャルサインインの認証の概要

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

Amazon Cognito をソーシャル、SAML、または OpenID Connect (OIDC) に接続すると IdPs、ユーザープールは複数のサービスプロバイダーとアプリ間のブリッジとして機能します。IdP にとって、Amazon Cognito はサービスプロバイダー (SP) です。OIDC ID トークンまたはSAMLアサーションを Amazon Cognito に IdPs 渡す。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ウェブトークンについて (JWTs) を参照してください。

フェデレーションまたはローカルを問わず、ユーザーを認証して認可するために、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 ログインエンドポイント にリダイレクトされます。

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

  • で IdP を更新する場合 UpdateIdentityProvider API リクエスト。ホストされた UI に表示されるまでに最大 1 分かかることがあります。

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

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

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