ログインフローの起点は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(クエリ文字列)] に、先ほど作成したクエリ文字列を入力します。