セッションレイヤー

ユーザーのログインで作成可能なセッションレイヤーには通常、以下の3種類があります。

  • アプリケーションセッションレイヤー:このレイヤーはアプリケーションの内部セッションです。アプリケーションがユーザーの認証にAuth0を使用していても、アプリケーションへのユーザーのログインはアプリケーションによって追跡されます。例えば、通常のWebアプリケーションでは、クッキー内にこの情報を保存することで追跡できます。

  • Auth0セッションレイヤー:Auth0も認可サーバーでのユーザーセッションを維持し、クッキー内にユーザー情報を保管します。このレイヤーは、次回ユーザーがログインのためにAuth0にリダイレクトされたときに、ユーザーの情報が記憶されている状態にするために使用されます。このセッションレイヤーは、インバウンドSSOの実装でSSOエクスペリエンスを実現できるようにします。

  • IDプロバイダーセッションレイヤー:ユーザーがFacebookやGoogleなどのIDプロバイダーを使ってサインインしようとしたときに、すでに(使用しているプロバイダーの)有効なサインインが存在している場合には、再度サインインを促されることはありませんが、Auth0やアプリケーションと情報共有することの承認が求められるかもしれません。

セッションからのログアウト

Auth0実装のコンテキストでは、ログアウトは認証済みセッションを終了することになります。不要になったセッションを終了するのは、認可されていない第三者による乗っ取りを防ぐためのベストプラクティスです。

Auth0はユーザーがログアウトしやすくなるツールを提供します。これには、異なるレベルのログアウトを行うオプションや、ログアウト完了後のユーザーの行先を決定するオプションが含まれます。

  • アプリケーションセッションレイヤーのログアウト:アプリケーションからユーザーをログアウトさせることは、一般的にユーザーのアプリケーションセッションが消去されることになり、これをお使いのアプリケーションで処理する必要があります。アプリケーションセッションレイヤーの場合、セッション終了を円滑化するためにAuth0テナントで使用しなければならないものはありません。このため、お使いのアプリケーションのセッションスタックを利用して、セッション関連の情報をすべて消去することが必要になります。Auth0 SDKの中には、アプリケーションセッションをサポートしているものもあるので、ローカルSDKセッションの削除が必要かどうかは、ドキュメントを確認してください。

  • Auth0セッションレイヤーのログアウト:Auth0セッションレイヤーからユーザーをログアウトするには、ユーザーをAuth0のログアウトエンドポイントにリダイレクトさせ、Auth0がSSOクッキーをクリアできるようにします。

  • IDプロバイダーセッションレイヤーのログアウト:このセッションレイヤーからユーザーをログアウトさせる必要はありませんが、必要であれば、Auth0を使って強制的にログアウトさせることができます。

リダイレクトURL

Auth0セッションレイヤーからログアウトさせるには、ユーザーをhttps://<{yourCNAME}または{yourTenant}auth0.com>/oidc/logoutにリダイレクトする必要があります。通常、これは技術スタックに対応するAuth0 SDKの適切なメソッドを使用することで実行されます。これにより、Auth0セッションが消去されます。その要求にid_token_hintというクエリパラメーターを追加することも検討してみてください。このパラメーターには、事前登録されたURLが含まれている必要があり、オープンリダイレクト攻撃から守ってくれる役割を果たします。

Auth0はログアウト後に、許可リスト登録されたURLにのみリダイレクトします。これらを設定できる場所は2つあります。設定できる1つ目の場所は、Auth0テナントレベルにあります。ここで、すべてのアプリケーションで共有されるログアウトURLセットを設定できます。2つ目の場所は、アプリケーション設定にあります。各アプリケーションごとに異なるリダイレクトが必要な場合は、アプリケーション設定でURLを許可リストに登録できます。これにより、アプリケーション固有のコンテキストでログアウトURLを設定することができます。

セッションのライフタイムとセッションのタイムアウト

ユーザーがアプリケーションから明示的にログアウトしない場合の動作を設定できます。Auth0には、このシナリオでAuth0セッションの終了に対処するためのセッションライフタイム制限があります。

フェデレーションログアウト

IDプロバイダーセッションレイヤーからユーザーをログアウトさせることもできます。推奨はされませんが、多くのプロバイダーに対して、federatedクエリパラメーターを/oidc/logoutへのリダイレクトに追加すると、Auth0でこの動作を実現することができます。これにより、ユーザーはIDプロバイダーにリダイレクトされ、そこでログアウトされます。フェデレーションログアウトの詳細については、「IDプロバイダーからユーザーをログアウトさせる」を参照してください。

もっと詳しく