ログインフローの起点はIdPではなく、OIDCアプリケーションにすることを強くお勧めします。詳細については、「SAML IDプロバイダー起点のシングルサインオンを構成する」をお読みください。
- カスタムログイン経路ハンドラーをアプリケーションに追加します。
-
以下を許可するようにSAML接続を更新します。
- IdP起点のSAML応答の受信を受け付ける
- サービスプロバイダー起点の認証要求を送信するデフォルトのアプリケーションにリダイレクトする
仕組み

- ユーザーがSAML IdPのログインエンドポイントに移動します。
- SAML IdPがログインページを返します。
- ユーザーが資格情報をSAML IdPに送信します。
- SAML IdPがユーザーのセッションを作成し、フォームPostとSAML応答のあるHTMLページを返します。
- ページがHTTP
POST
呼び出しを行って、自動的にSAML応答をAuth0テナントに送信します。 - Auth0テナントがユーザーのブラウザーでOIDCアプリケーションのカスタムログイン経路ハンドラーにリダイレクトし、DトークンをURLフラグメントとして渡します。
- ブラウザーがOIDCアプリケーションのカスタムログイン経路ハンドラーを呼び出して、
connection
パラメーターとIDトークンを渡します。 - OIDCアプリケーションがIDトークンを無視して
connection
パラメーターを解析し、セッションのstate
パラメーターを作成してから、ユーザーのブラウザーをAuth0テナントの/authorize
エンドポイントにリダイレクトします。 - ブラウザーがAuth0テナントの
/authorize
エンドポイントを呼び出して、提供されたconnection
とstate
のパラメーターを渡します。 - Auth0テナントがSAMLログイン要求を生成し、ユーザーのブラウザーをSAML IdPのログインエンドポイントにリダイレクトします。
- ブラウザーがSAMLログイン要求をSAML IdPのログインエンドポイントに送信します。
- SAML IdPがユーザーのセッションを見つけて、フォームPostとSAML応答のあるHTMLページを返します。
- ページがHTTP
POST
呼び出しを行って、自動的にSAML応答をAuth0テナントに送信します。 - Auth0テナントがユーザーのブラウザーをアプリケーションのログイン経路ハンドラーにリダイレクトします。
- ブラウザーばアプリケーションのログイン経路ハンドラーを呼び出して、提供された
state
パラメーターとIDトークンを渡します。 - OIDCアプリケーションが
state
パラメーターを検証して、IDトークンを解析し、ユーザーにアプリケーションセッションを作成します。
カスタムログイン経路ハンドラーを作成する
カスタムログイン経路ハンドラーはアプリケーションのログインメソッドを呼び出します。ハンドラーはconnection
パラメーターを受け付けて、Auth0テナントに送信する認証要求に含めます。
カスタムログイン経路ハンドラーに関係付けるエンドポイントは、標準のログイン経路ハンドラーに関係付けているものとは別にすることをお勧めします。たとえば、標準のログイン経路ハンドラーを/login
エンドポイントと関連付けている場合には、カスタムログイン経路ハンドラーを/startlogin
エンドポイントと関連付けます。
Auth0 SDKを認証の処理に使用していない場合には、CSRF攻撃から保護するために、アプリケーションのログインメソッドが
state
パラメーター値を/authorize
エンドポイントに渡し、IDプロバイダーからの応答でstate
パラメーターを検証しなければなりません。詳しくは、「OAuth 2.0の状態パラメーターを使って攻撃を防ぎ、ユーザーをリダイレクトする」をお読みください。例
Auth0 Single Page App SDKを使用している場合には、カスタムログイン経路ハンドラーを追加して、ログインメソッドを更新し、以下のように接続パラメーターに対応させることができます。クエリ文字列を作成する
クエリ文字列にはredirect_uri
パラメーターを含めます。パラメーターの値はURLエンコードされ、以下で構成されなければなりません。
- カスタムログイン経路ハンドラーに関連付けられているアプリケーションのエンドポイント
- SAML接続名の値が指定された
connection
パラメーター
例
アプリケーションのエンドポイントがhttps://exampleco.com/startlogin
でSAML接続名がmy-saml-connection
の場合、クエリ文字列はredirect_uri=https%3A%2F%2Fexampleco.com%2Fstartlogin%3Fconnection%3Dmy-saml-connection
になります。
アプリケーションを構成する
- [Auth0 Dashboard]>[Applications(アプリケーション)]>[Application(アプリケーション)]に移動します。
- Auth0にあるOIDCアプリケーションを表す新しいアプリケーションを作成します。
- [Allowed Callback URL(許可されているコールバックURL)] に、カスタムログイン経路ハンドラーに関連付けられているアプリケーションのエンドポイントを含めて更新します。
接続を構成する
- [Auth0Dashboard]>[Authentication(認証)]>[Enterprise(エンタープライズ)]>[SAML]に移動します。
- 新しいSAML接続を作成します。
- [IdP-Initiated SSO(IdP起点のSSO)] ビューに切り替えます。
- [Accept Requests(要求を許可する)] を選択します。
- [Default Application(デフォルトのアプリケーション)] に、先ほど作成したアプリケーションを選択します。
- [Response Protocol(応答プロトコル)] に [OpenID Connect] を選択します。
- [Query String(クエリ文字列)] に、先ほど作成したクエリ文字列を入力します。