Amazon Cognito ユーザープールでの SAML セッション開始 - Amazon Cognito

Amazon Cognito ユーザープールでの SAML セッション開始

Amazon Cognito は、サービスプロバイダーによって開始される (SP 開始) シングルサインオン (SSO) をサポートしています。SAML V2.0 技術概要のセクション 5.1.2 では、SP で開始される SSO について説明します。Amazon Cognito は、アプリケーションの ID プロバイダー (IdP) です。アプリケーションは、認証されたユーザーのトークンを取得するサービスプロバイダー (SP) です。ただし、サードパーティー IdP を使用してユーザーを認証する場合、Amazon Cognito は SP です。SAML IdP で認証する Amazon Cognito ユーザーは、常に Amazon Cognito にリクエストを行い、認証のために IdP にリダイレクトする必要があります。

一部のエンタープライズユースケースでは、内部アプリケーションへのアクセスは Enterprise IdP がホストするダッシュボードのブックマークから始まります。ユーザーがブックマークを選択すると、IdP は SAML 応答を生成して SP に送信し、アプリケーションでユーザーを認証します。

Amazon Cognito は IdP で開始される SSO をサポートしていません。Amazon Cognito は SAML リクエストで認証を開始しない限り、受信した SAML レスポンスを要請したことを検証できません。

エンタープライズダッシュボードで Amazon Cognito アプリケーションをブックマークする

SAML または OIDC IdP ダッシュボードにブックマークを作成して、AmazonCognito ユーザープールで認証するウェブアプリケーションへの SSO アクセスを提供できます。Amazon Cognito には、ユーザーがホストされた UI でサインインする必要のない方法でリンクできます。これを行うには、次のテンプレートから AmazonCognito ユーザープールの 認可エンドポイント へのブックマークリンクを作成します。

https://your_Amazon_Cognito_userpool_domain/authorize?response_type=code&identity_provider=your-SAML-IdP-name&client_id=your-client-id&redirect_uri=https://your_application_redirect_url

注記

認証エンドポイントへのリクエストで、identity_provider パラメータの代わりに idp_identifier パラメータを使用することもできます。IdP 識別子は、ユーザープールに ID プロバイダーを作成するときに設定できる代替名です。「SAML ID プロバイダー名の選択」を参照してください。

リクエストで適切なパラメータを使用すると、/authorize では、Amazon Cognito は SP が開始したサインインフローをサイレントに開始し、IdP でサインインするようにユーザーをリダイレクトします。

次の図表は、IDP 開始 SSO をエミュレートする認証フローを示しています。ユーザーは、会社ポータルのリンクから Amazon Cognito で認証できます。


                    エンタープライズアプリケーションのダッシュボードから始まる Amazon Cognito SAML サインイン。

プロバイダーからメタデータドキュメントをアップロードまたはリンクして、ユーザープールに SAML IdP を追加します。サインインに SAML IdP を使用し、承認されたコールバック URL としてアプリの URL を持つアプリクライアントを作成します。アプリクライアントの詳細については、「ユーザープールのアプリケーションクライアントの設定」を参照してください。

このソリューションを使用してアプリを認証する前に、ホストされた UI から SP が開始したアプリケーションへのサインインをテストします。Amazon Cognito で SAML IdP を設定する方法の詳細については、「サードパーティー SAML ID プロバイダーと Amazon Cognito ユーザープールとの統合」を参照してください。

これらの要件を満たしたら、identity_provider または idp_identifier パラメータのいずれかを含む /authorize エンドポイントへのブックマークを作成します。以下の図表は、そのプロセスを示したものです。

  1. ユーザーは SSO IdP ダッシュボードにサインインします。ユーザーがアクセスを許可されているエンタープライズアプリケーションには、このダッシュボードが表示されます。

  2. ユーザーが Amazon Cognito で認証するアプリケーションへのリンクを選択します。多くの SSO ポータルでは、カスタムアプリリンクを追加できます。SSO ポータルでパブリック URL へのリンクを作成するために使用できる機能はすべて機能します。

  3. SSO ポータル内のカスタムアプリリンクは、ユーザーをユーザープール 認可エンドポイント に誘導します。リンクには、response_typeclient_idredirect_uri および identity_provider のパラメータが含まれます。identity_provider パラメータは、ユーザープールで IdP に付けた名前です。identity_provider パラメータの代わりに idp_identifier パラメータを使用することもできます。ユーザーは、idp_identifier または identity_provider パラメータのいずれかを含むリンクからホストされた UI にアクセスします。このユーザーはサインインページをバイパスし、IdP で認証するために直接ナビゲートします。SAML IdP の名前付けの詳細については、「SAML ID プロバイダー名の選択」を参照してください。

    URL の例

    https://your_Amazon_Cognito_userpool_domain/authorize?response_type=code&identity_provider=your-SAML-IdP-name&client_id=your-client-id&redirect_uri=https://your_application_redirect_url

  4. Amazon Cognito は、SAML リクエストを使用してユーザーセッションを IdP にリダイレクトします。

  5. ユーザーがダッシュボードにサインインしたときに、IdP からセッション Cookie を受信した可能性があります。IdP はこの cookie を使用してユーザーをそのまま検証し、SAML レスポンスで Amazon Cognito idpresponse エンドポイントにリダイレクトします。アクティブなセッションが存在しない場合、IdP は SAML レスポンスを投稿する前にユーザーを再認証します。

  6. Amazon Cognito は SAML レスポンスを検証し、SAML アサーションに基づいてユーザープロファイルを作成または更新します。

  7. Amazon Cognito は、認証コードを使用してユーザーを内部アプリケーションにリダイレクトします。内部アプリ URL をアプリクライアントの承認されたリダイレクト URL として設定しました。

  8. アプリは認証コードを Amazon Cognito トークンと交換します。詳細については、「トークンエンドポイント」を参照してください。