OIDC ユーザープール IdP 認証フロー - Amazon Cognito

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

OIDC ユーザープール IdP 認証フロー

ユーザーが OIDC IdP を使用してアプリケーションにサインインすると、次の認証フローを通過します。

  1. ユーザーが Amazon Cognito の組み込みサインインページにアクセスすると、Salesforce などの OIDC IdP 経由でサインインするオプションが提示されます。

  2. ユーザーは、OIDC IdP の authorization エンドポイントにリダイレクトされます。

  3. ユーザーが認証されると、OIDC IdP が認証コードを使用して Amazon Cognito にリダイレクトします。

  4. Amazon Cognito が OIDC IdP の認証コードをアクセストークンと交換します。

  5. Amazon Cognito がユーザープールのユーザーアカウントを作成または更新します。

  6. Amazon Cognito がアプリケーションのベアラートークンを発行します。これには ID トークン、アクセストークン、および更新トークンが含まれる場合があります。

OIDC ユーザープール IdP 認証フロー
注記

Amazon Cognito は 5 分以内に完了しない認証リクエストをキャンセルし、ホストされた UI にユーザーをリダイレクトします。ページには、Something went wrong というエラーメッセージが表示されます。

OIDC は OAuth 2.0 上の ID レイヤーで、 が OIDC クライアントアプリケーション (関係当事者) IdPs に発行する JSON 形式の (JWT) ID トークンを指定します。Amazon Cognito の OIDC Relying Party としての追加に関する情報は、OIDC IdP のドキュメントを参照してください。

ユーザーが認証コード付与を使用して認証すると、ユーザープールは ID、アクセス、更新トークンを返します。ID トークンは ID 管理用の OIDC 標準トークンです。アクセストークンは OAuth 2.0 標準トークンです。ユーザープールのアプリケーションクライアントがサポートできる付与タイプの詳細については、「認可エンドポイント」を参照してください。

ユーザープールが OIDC プロバイダーからのクレームを処理する方法

ユーザーがサードパーティーの OIDC プロバイダーへのサインインを完了すると、Amazon Cognito がホストする UI は IdP から認証コードを取得します。ユーザープールは、アクセストークンと ID トークンの認証コードを IdP の token エンドポイントと交換します。ユーザープールはこれらのトークンをユーザーやアプリに渡すのではなく、これらを使って独自のトークンのクレームで提示するデータを使用してユーザープロファイルを構築します。

Amazon Cognito はアクセストークンを個別に検証しません。代わりに、userInfoプロバイダーの エンドポイントにユーザー属性情報をリクエストし、トークンが有効でない場合はリクエストが拒否されることを想定しています。

Amazon Cognito は、以下のチェックを行ってプロバイダー ID トークンを検証します。

  1. プロバイダーが RSA、HMAC、Elliptic Curve というセットのアルゴリズムを使用してトークンに署名したことをチェックします。

  2. プロバイダーが非対称署名アルゴリズムを使用してトークンに署名した場合は、トークンの kid クレームの署名キー ID がプロバイダーの jwks_uri エンドポイントに表示されていることを確認します。

  3. ID トークンの署名を、プロバイダーのメタデータに基づいて想定される署名と比較します。

  4. iss クレームを IdP に設定された OIDC 発行者と比較します。

  5. aud クレームが IdP で設定されているクライアント ID と一致するか、または aud クレームに複数の値がある場合は設定されたクライアント ID が含まれているかを比較します。

  6. exp クレームのタイムスタンプが現在の時刻より前でないことをチェックします。

ユーザープールは ID トークンを検証し、プロバイダーアクセストークンを使用してプロバイダーの userInfo エンドポイントへのリクエストを試みます。アクセストークンのスコープによって読み取りが許可されたユーザープロファイル情報がすべて取得されます。次にユーザープールはユーザープールの要求に従って設定したユーザー属性を検索します。プロバイダー設定で、必要な属性の属性マッピングを作成する必要があります。ユーザープールはプロバイダー ID トークンと userInfo レスポンスをチェックします。ユーザープールは、マッピングルールに一致するすべてのクレームをユーザープールのユーザープロファイルのユーザー属性に書き込みます。ユーザープールは、マッピングルールに一致するが必須ではなく、プロバイダーのクレームにも含まれていない属性を無視します。