ユーザープールマネージドログイン - Amazon Cognito

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

ユーザープールマネージドログイン

ユーザープールのサービスをホストするウェブドメインを選択できます。Amazon Cognito ユーザープールは、ドメインを追加すると、マネージドログインと総称して次の関数を取得します。

  • OAuth 2.0 および OpenID Connect (OIDC) で動作するアプリケーションの ID プロバイダー (IdP) として機能する認可サーバー。認可サーバーでは、認証リクエストのルーティング、JSON ウェブトークン (JWT) の発行、管理、ユーザー属性情報の配信が行われます。

  • サインイン、サインアウト、パスワード管理などの認証オペレーション用のready-to-useユーザーインターフェイス (UI)。マネージドログインページは、認証サービスのウェブフロントエンドとして機能します。

  • SAML 2.0 IdPs、OIDC IdP、 IdPs Facebook、Login with Amazon、Sign in with Apple、Google へのサービスプロバイダー (SP)、または証明書利用者 (RP)。

マネージドログインと一部の機能を共有する追加のオプションは、従来のホストされた UI です。クラシックホスト UI は、マネージドログインサービスの第 1 世代バージョンです。ホストされた UI IdP および RP サービスには、通常、マネージドログインと同じ特性がありますが、ログインページの設計はよりシンプルで、機能は少なくなります。例えば、パスキーサインインはクラシックホスト UI では使用できません。Lite 機能プランでは、ユーザープールドメインサービスの唯一のオプションはクラシックホスト UI です。

マネージドログインページは、ユーザープール内の基本的なサインアップ、サインイン、多要素認証、パスワードリセットアクティビティ用のウェブインターフェイスのコレクションです。また、ユーザーにサインインオプションの選択を許可する場合に、ユーザーを 1 つ以上のサードパーティー ID プロバイダー (IdPs) に接続します。ユーザーの認証と認可を行う場合、アプリはユーザーのブラウザでマネージドログインページを呼び出すことができます。

マネージドログインユーザーエクスペリエンスをカスタムロゴ、背景、スタイルに合わせてブランドに合わせることができます。マネージドログイン UI に適用するブランドには、マネージドログイン用のブランドデザイナーと、ホストされた UI 用のホストされた UI (クラシック) ブランドという 2 つのオプションがあります。

ブランドデザイナー

Amazon Cognito コンソールのup-to-date認証オプションとビジュアルエディタで更新されたユーザーエクスペリエンス。

ホストされた UI ブランド

Amazon Cognito ユーザープールの以前の導入者向けの使い慣れたユーザーエクスペリエンス。ホストされた UI のブランドはファイルベースのシステムです。ホストされた UI ページにブランドを適用するには、ロゴイメージファイルと、いくつかの事前定義された CSS スタイルオプションの値を設定するファイルをアップロードします。

ブランドデザイナーは、ユーザープールのすべての機能プランで利用できるわけではありません。詳細については、「ユーザープール機能プラン」を参照してください。

マネージドログインおよびホストされた UI サービスへのリクエストの構築の詳細については、「」を参照してくださいユーザープールエンドポイントとマネージドログインリファレンス

注記

Amazon Cognito マネージドログインは、カスタム認証チャレンジ Lambda トリガーによるカスタム認証をサポートしていません。

マネージドログインローカリゼーション

マネージドログインのデフォルトは、ユーザーインタラクティブページの英語です。選択した言語に合わせてローカライズされたマネージドログインページを表示できます。使用可能な言語は、 で使用可能な言語です AWS Management Console。ユーザーに配信するリンクで、次の例に示すように、langクエリパラメータを追加します。

https://<your domain>/oauth2/authorize?lang=es&response_type=code&client_id=<your app client id>&redirect_uri=<your relying-party url>

Amazon Cognito は、 langパラメータを使用した最初のリクエストの後に、ユーザーのブラウザで言語設定で Cookie を設定します。Cookie が設定されると、 パラメータを表示したり、リクエストに含めたりすることなく、言語の選択が保持されます。例えば、ユーザーが lang=deパラメータを使用してサインインリクエストを行った後、マネージドログインページは、Cookie をクリアするか、 などの新しいローカリゼーションパラメータを使用して新しいリクエストを行うまで、ドイツ語でレンダリングされますlang=en

ローカリゼーションはマネージドログインでのみ使用できます。Essentials または Plus 機能プランに登録していて、マネージドログインブランドを使用するようにドメインを割り当てている必要があります。

ユーザーがマネージドログインで行った選択は、カスタム E メールまたは SMS 送信者トリガーでは使用できません。これらのトリガーを実装するときは、 locale 属性などの他のメカニズムを使用して、ユーザーの優先言語を決定する必要があります。

次の言語を使用できます。

マネージドログイン言語
言語 コード
ドイツ語 de
英語 en
スペイン語 es
フランス語 fr
バハサインドネシア語 id
イタリア語 it
日本語 ja
韓国語 ko
ポルトガル語 pt-BR
簡体字中国語 zh-CN
繁体字中国語 zh-TW

を使用したマネージドログインの設定 AWS Amplify

AWS Amplify を使用してウェブまたはモバイルアプリに認証を追加する場合は、Amplify コマンドラインインターフェイス (CLI) のマネージドログインページと Amplify フレームワークのライブラリを設定できます。アプリに認証を追加するには、 Authカテゴリをプロジェクトに追加します。次に、アプリケーションで、Amplify クライアントライブラリを使用してユーザープールユーザーを認証します。

認証のためにマネージドログインページを呼び出すことも、IdP にリダイレクトする認可エンドポイントを介してユーザーをフェデレーションすることもできます。ユーザーがプロバイダーで正常に認証されると、Amplify はユーザープールに新しいユーザーを作成し、ユーザーのトークンをアプリに渡します。

次の例は、 AWS Amplify を使用してアプリでソーシャルプロバイダーによるマネージドログインを設定する方法を示しています。

Amazon Cognito コンソールを使用したマネージドログインの設定

マネージドログインとホストされた UI の最初の要件は、ユーザープールドメインです。ユーザープールコンソールで、ユーザープールのドメインタブに移動し、Cognito ドメインまたはカスタムドメインを追加します。新しいユーザープールを作成するプロセス中にドメインを選択することもできます。詳細については、「ユーザープールのドメインを設定する」を参照してください。ユーザープールでドメインがアクティブな場合、すべてのアプリケーションクライアントはそのドメインでパブリック認証ページを提供します。

ユーザープールドメインを作成または変更するときは、ドメインのブランドバージョンを設定します。このブランドバージョンは、マネージドログインまたはホストされた UI (クラシック) のいずれかです。選択したブランドバージョンは、ドメインでサインインサービスを使用するすべてのアプリクライアントに適用されます。

次のステップでは、ユーザープールのアプリクライアントタブからアプリクライアントを作成します。アプリケーションクライアントを作成するプロセスで、Amazon Cognito はアプリケーションに関する情報を求め、リターン URL を選択するように求めます。戻り URL は、証明書利用者 (RP) URL、リダイレクト URI、コールバック URL とも呼ばれます。これは、 https://www.example.comや など、アプリケーションが実行する URL ですmyapp://example

ユーザープールでドメインとアプリケーションクライアントをブランドスタイルで設定すると、マネージドログインページがインターネットで利用可能になります。

サインインページの表示

Amazon Cognito コンソールで、アプリクライアントメニューのアプリクライアントのログインページタブのログインページの表示ボタンを選択します。 このボタンをクリックすると、以下の基本パラメータを含むユーザープールドメインのサインインページが表示されます。

  • アプリクライアント ID

  • 認可コード付与リクエスト

  • 現在のアプリクライアント用に有効にしたすべてのスコープのリクエスト

  • 現在のアプリクライアントのリストにある最初のコールバック URL

ログインページの表示ボタンは、マネージドログインページの基本機能をテストする場合に役立ちます。ログインページは、ユーザープールドメインに割り当てたブランドバージョンと一致します。追加および変更されたパラメータを使用してサインイン URL をカスタマイズすることできます。ほとんどの場合、ログインページの表示リンクの自動生成されたパラメータは、アプリのニーズに完全に一致しません。このような場合は、ユーザーのサインイン時にアプリが呼び出す URL をカスタマイズする必要があります。サインインパラメータのキーと値の詳細については、「ユーザープールエンドポイントとマネージドログインリファレンス」を参照してください。

サインインウェブページでは、次の URL 形式を使用します。この例では、response_type=code パラメーターを使って認可コードの付与をリクエストしています。

https://<your domain>/oauth2/authorize?response_type=code&client_id=<your app client id>&redirect_uri=<your relying-party url>

ユーザープールのドメインメニューからユーザープールのドメイン文字列を検索できます。アプリクライアントメニューでは、アプリクライアント IDs、コールバック URLs、許可されたスコープ、およびその他の設定を識別できます。

カスタムパラメータを使用して /oauth2/authorize エンドポイントに移動すると、Amazon Cognito は /oauth2/login エンドポイントにリダイレクトするか、identity_provider または idp_identifier パラメータがある場合は、IdP サインインページにそのままリダイレクトします。

暗黙的な許可のリクエスト例

暗黙的なコード付与の次の URL を使用して、サインインウェブページを表示できますresponse_type=token。サインインが正常に行われると、Amazon Cognito がユーザープールトークンをウェブブラウザのアドレスバーに返します。

https://mydomain.us-east-1.amazoncognito.com/authorize?response_type=token&client_id=1example23456789&redirect_uri=https://mydomain.example.com

ID トークンとアクセストークンは、リダイレクト URL に追加されるパラメーターとして表示されます。

ここでは、暗黙的な許可リクエストからのレスポンス例を示します。

https://mydomain.example.com/#id_token=eyJraaBcDeF1234567890&access_token=eyJraGhIjKlM1112131415&expires_in=3600&token_type=Bearer

認証ページのカスタマイズ

以前は、Amazon Cognito は従来のホストされた UI を持つログインページのみをホストしていました。これは、認証ウェブページにユニバーサルルックを付与するシンプルな設計です。ロゴイメージを使用して Amazon Cognito ユーザープールをカスタマイズし、CSS スタイルの値を指定したファイルを使用してスタイルを調整することができます。後で、Amazon Cognito はマネージドログインを導入しました。これは、更新されたホスト認証サービスです。マネージドログインは、ブランドデザイナーによる更新されたlook-and-feelです。ブランドデザイナーは、ノーコードのビジュアルエディタであり、ホストされた UI カスタマイズエクスペリエンスよりも多くのオプションスイートです。マネージドログインでは、カスタム背景イメージとダークモードのテーマも導入されました。

ユーザープールで、マネージドログインとホストされた UI ブランドエクスペリエンスを切り替えることができます。マネージドログインページのカスタマイズの詳細については、「」を参照してくださいマネージドログインページにブランドを適用する

マネージドログインとホストされた UI について知っておくべきこと

1 時間のマネージドログインとホストされた UI セッション Cookie

ユーザーがログインページまたはサードパーティープロバイダーでサインインすると、Amazon Cognito はブラウザに Cookie を設定します。この Cookie を使用すると、ユーザーは同じ認証方法で 1 時間再度サインインできます。ブラウザ Cookie でサインインすると、アプリクライアント設定で指定された期間だけ新しいトークンが取得されます。ユーザー属性または認証要素を変更しても、ブラウザ Cookie で再度サインインできるかどうかには影響しません。

セッション Cookie による認証では、Cookie の有効期間はさらに 1 時間にリセットされません。ユーザーが最後に成功したインタラクティブ認証から 1 時間以上後にサインインページにアクセスしようとする場合は、再度サインインする必要があります。

ユーザーアカウントの確認とユーザー属性の検証

ユーザープールのローカルユーザーの場合、Cognito が検証と確認のために自動的にメッセージを送信できるようにユーザープールを設定すると、マネージドログインとホストされた UI が最適に機能します。この設定を有効にすると、Amazon Cognito は、サインアップしたユーザーに確認コードを含むメッセージを送信します。代わりにユーザープール管理者としてユーザーを確認すると、サインアップ後にログインページにエラーメッセージが表示されます。この状態で、Amazon Cognito は新しいユーザーを作成しましたが、検証メッセージを送信できませんでした。引き続きユーザーを管理者として確認することはできますが、エラーが発生すると、ユーザーはサポートデスクに連絡する可能性があります。管理者の確認の詳細については、「ユーザーにアプリケーションへのサインアップを許可するがユーザープール管理者として確認する」を参照してください。

設定の変更の表示

ページにスタイルを変更してもすぐに表示されない場合は、数分待ってからページを更新します。

ユーザープールトークンのデコード

Amazon Cognito ユーザープールトークンは、RS256 アルゴリズムを使用して署名されます。を使用して、ユーザープールトークンをデコードおよび検証できます AWS Lambda。GitHub のAmazon Cognito JWT トークンのデコードと検証」を参照してください。

AWS WAF ウェブ ACLs

ユーザープールを設定して、ログインページと認可サーバーを提供するドメインを AWS WAF ウェブ ACLs のルールで保護できます。現在、設定したルールは、ログインブランドバージョンを管理している場合にのみ、これらのページに適用されます。ホストされた UI (クラシック)。詳細については、「AWS WAF ウェブ ACLs と Amazon Cognito について知っておくべきこと」を参照してください。

TLS のバージョン

マネージドログインページとホストされた UI ページには、転送中の暗号化が必要です。Amazon Cognito が提供するユーザープールドメインでは、ユーザーのブラウザが TLS バージョン 1.2 以上をネゴシエートする必要があります。カスタムドメインは、TLS バージョン 1.2 でのブラウザ接続をサポートします。ホストされた UI (クラシック) では、カスタムドメインに TLS 1.2 は必要ありませんが、新しいマネージドログインでは、カスタムドメインとプレフィックスドメインの両方に TLS バージョン 1.2 が必要です。Amazon Cognito はドメインサービスの設定を管理するため、ユーザープールドメインの TLS 要件を変更することはできません。

CORS ポリシー

マネージドログインもホストされた UI も、カスタム Cross-Origin Resource Sharing (CORS) オリジンポリシーをサポートしていません。CORS ポリシーは、ユーザーがリクエストで認証パラメータを渡すことを防ぎます。代わりに、アプリケーションのフロントエンドに CORS ポリシーを実装します。Amazon Cognito は、次のエンドポイントへのリクエストにAccess-Control-Allow-Origin: *レスポンスヘッダーを返します。

cookie

マネージドログインとホストされた UI は、ユーザーのブラウザで Cookie を設定します。Cookie は、サイトがサードパーティーの Cookie を設定しない一部のブラウザの要件に準拠しています。これらはユーザープールエンドポイントのみを対象とし、以下が含まれます。

  • 各リクエストの XSRF-TOKEN Cookie。

  • ユーザーがリダイレクトされたときのセッション整合性のための csrf-state Cookie。

  • 成功したサインイン試行を 1 時間保持する cognito セッション Cookie。

  • マネージドログインでユーザーが選択した言語ローカリゼーションを保持する lang Cookie。

  • ユーザーがマネージドログインページ間を移動する際に必要なデータを保持する page-dataCookie。

iOS では、すべての Cookie をブロックできます。この設定は、マネージドログインまたはホストされた UI と互換性がありません。この設定を有効にする可能性のあるユーザーと連携するには、 AWS SDK を使用してユーザープール認証をネイティブ iOS アプリに構築します。このシナリオでは、Cookie ベースではない独自のセッションストレージを構築できます。

マネージドログインバージョン変更の影響

ドメインを追加し、マネージドログインバージョンを設定する場合の次の影響を考慮してください。

  • マネージドログインまたはホストされた UI (クラシック) ブランドでプレフィックスドメインを追加する場合、ログインページが使用可能になるまでに最大 60 秒かかることがあります。

  • マネージドログインまたはホストされた UI (クラシック) ブランドを使用してカスタムドメインを追加する場合、ログインページが使用可能になるまでに最大 5 分かかることがあります。

  • ドメインのブランドバージョンを変更する場合、ログインページが新しいブランドバージョンで利用可能になるまでに最大 4 分かかることがあります。

  • マネージドログインとホストされた UI (クラシック) ブランドを切り替えると、Amazon Cognito はユーザーセッションを維持しません。新しいインターフェイスで再度サインインする必要があります。

デフォルトのスタイル

でアプリケーションクライアントを作成すると AWS Management Console、Amazon Cognito はアプリケーションクライアントにブランドスタイルを自動的に割り当てます。CreateUserPoolClient オペレーションを使用してプログラムでアプリケーションクライアントを作成する場合、ブランドスタイルは作成されません。マネージドログインは、CreateManagedLoginBranding リクエストでアプリケーションクライアントを作成するまで、 AWS SDK で作成されたアプリケーションクライアントでは使用できません。