ユニバーサルログアウト

Auth0はOkta Workforce Identity Cloudとのユニバーサルログアウト統合に対応しています。この機能は管理イベントやセキュリティイベントが発生したときに、ユーザーをアプリケーションからログアウトさせます。

ユニバーサルログアウトはGlobal Token Revocation仕様を実装しています。これは、ユーザーセッションに加えてリフレッシュトークンを取り消すことにより、確立されているOpenID Connectのバックチャネルログアウト標準よりも優れた機能性を提供します。このログアウトソリューションは、リフレッシュトークン、アプリケーションセッションとIDプロバイダーセッションを組み合わせることによって新しいトークンを取得し、ユーザーのログインを維持しようとする従来型のWebアプリケーションとシングルページアプリケーション(SPA)、そしてネイティブアプリケーションを包括的に扱います。

OktaSAMLOpenID Connectの接続タイプでWorkforce Identity Cloudとフェデレーションを行っている場合は、グローバルトークン取り消しエンドポイントを構築してOktaのユニバーサルログアウトと動作させる必要はありません。その代わりに、Auth0接続に特有のエンドポイントのURLをOkta Workforce管理者に提供すれば、Auth0のOpenID Connectバックチャネルログアウトを使用してアプリケーションセッションを必要に応じて終了させることができます。

仕組み

Auth0のグローバルトークン取り消しエンドポイントは、アプリにログアウトを構築するドキュメントに記載のプロファイルに従っています。ログアウト要求内でユーザーを特定するためにiss_subの形式と、次のURL形式を使用します:

https://{yourDomain}/oauth/global-token-revocation/connection/{yourConnectionName}

Auth0がユーザーログアウトの要求を受け取ると、Okta Workforce Identity Cloudが発行したIDトークンやSAMLアサーションの検証に使用するのと同じキーセットで要求を検証します。そして、そのユーザーのAuth0セッションをすべて終了し、Auth0が発行したリフレッシュトークンを取り消して、構成されている場合にはOpenID Connectのバックチャネルログアウトをトリガーしてアプリケーションセッションを失効させます。

User workflow using Universal Logout

アプリケーションのユーザーがアクセスを失うまでにかかる時間は、アプリケーションの種類とAuth0との統合方法によって異なります。OIDCやOAuth 2.0のアイデンティティ標準への対応、そして、Auth0のクイックスタートとSDKを通して、Auth0は以下を含むアプリケーションのアーキテクチャに幅広く対応しています。

  • 従来型のWebアプリケーション:独自のアプリケーションセッションを作成し、リフレッシュトークンとアクセストークンを使ってセキュリティ保護されたバックエンドでAPIにアクセスします。

  • ブラウザーベースのJavaScriptアプリケーション:Auth0のセッションレイヤーを活用するか、リフレッシュトークンのローテーションなどの技術を使用して、Webブラウザー内でAPIへのアクセスに必要なアクセストークンを取得します。

  • ネイティブやモバイルのアプリケーション:Webブラウザー内で実行されないため、ユーザーをサインインしたまま維持するための主な方法として、リフレッシュトークンとアクセストークンを使用します。

リフレッシュトークンとAuth0のユーザーセッションを取り消す

ユニバーサルログアウト統合を有効化すると、アプリケーションがリフレッシュトークンやAuth0セッションを利用する場合にセキュリティの面でメリットがあります。

  • Auth0セッションを利用するブラウザーベースのアプリでは、アプリケーションが次回にAuth0セッションをポーリングするとユーザーがアクセスを失ってしまうため、Auth0はリダイレクト時にユーザーに再度認証を求めます。

  • リフレッシュトークンを使用するアプリでは、現在のアクセストークンの有効期限が切れると、ユーザーがアクセスを失います。この際の有効期限は、Auth0で構成されるアクセストークンの最大ライフタイムや数秒に至るまで大きな幅があります。

アプリケーションのユーザーセッションを取り消す

Webアプリケーションが作成したセッションについては、Auth0に既存のOpenID Connectのバックチャネルログアウト機能を使用して、ユニバーサルログアウトがAuth0のユーザーセッションを終了したときに終了します。詳細については、「Auth0 SDK実装の例」をお読みください。

Auth0でユニバーサルログアウトを構成する

ユニバーサルログアウトはAuth0の接続タイプごとに構成します。

Okta Workforce

  1. Auth0テナントをOkta Workforce Identity Cloudに接続します

  2. Auth0 Dashboardで[Authentication(認証)]>[Enterprise(エンタープライズ)]>[Okta Workforce]に移動します。使用している接続を選択してから、[Settings(設定)]を選択します。

  3. Okta Workforce管理者に提供する[Revocation Endpoint URL(取り消しエンドポイントのURL)]をコピーします。

OpenID Connect

  1. Auth0 Dashboardで[Authentication(認証)]>[Enterprise(エンタープライズ)]>[OpenID Connect]に移動します。使用している接続を選択してから、[Settings(設定)]を選択します。

  2. Okta Workforce管理者に提供する[Revocation Endpoint URL(取り消しエンドポイントのURL)]をコピーします。

SAML

  1. OktaをSAML IDプロバイダーとして構成します

  2. Auth0 Dashboardで[Authentication(認証)]>[Enterprise(エンタープライズ)]>[SAML]に移動します。使用している接続を選択してから、[Settings(設定)]を選択します。

  3. Okta Workforce Identity Cloudに登録されているSAMLアプリケーションのアプリケーションIDを[Subject(サブジェクト)]に入力します(例:0oagcc12354688xxxx)。詳細については、「アプリケーションIDを取得する方法」をお読みください。

  4. [Issuer(発行者)]については、Okta Workforce Identity Cloudの組織に登録されているSAMLアプリケーションに移動して、発行者のURIをコピーします。

  5. Okta Workforce管理者に提供する[Revocation Endpoint URL(取り消しエンドポイントのURL)]をコピーします。

Okta Workforce Identity Cloudでユニバーサルログアウトを構成する

Okta Workforce Identity Cloudでユニバーサルログアウトを構成して、Auth0の接続を使用しているアプリケーションにログアウト信号が送信できるようにします。これはOkta管理者が実行する必要があります。

前提条件

以下が必要です。

Oktaを構成する

Okta Workforceの組織でユニバーサルログアウトをAuth0接続に有効化します。

  1. Oktaポータルで[Applications(アプリケーション)]>[Applications(アプリケーション)]を選択します。

  2. Auth0統合に登録済みのアプリケーションを選択します。

  3. [General(一般設定)]タブの下で[Logout(ログアウト)]>[Edit(編集)]を選択します。

    Okta Dashboard image for Universal Logout configuration
  4. [Okta system or admin initiates logout(Oktasのシステムまたは管理者がログアウトを開始する]を選択します。

  5. Auth0からコピーしたURLを[Logout Endpoint URL(ログアウトエンドポイントのURL)]に入力します。

  6. [Subject Format(サブジェクトの形式)][Issuer and Subject Identifier(発行者とサブジェクトの識別子)]選択します。

  7. [Save(保存)]を選択します。

ユニバーサルログアウトをテストする

選択したユーザーのセッションを取り消して、Okta Workforce Identity Cloudでユニバーサルログアウトをテストします。

  1. Oktaポータルで[Directory(ディレクトリ)]>[People(ユーザー)]を選択します。

  2. Auth0アプリケーションにサインイン済みのユーザーを選択します。

  3. [More Actions(その他のアクション)]>[Clear User Sessions(ユーザーセッションの消去)]を選択します。

    Test Universal Logout in Okta Dashboard
  4. ダイアログで[Also include logout enabled apps and Okta API tokens(ログアウトが有効なアプリとOkta APIも含める)]を選択します。

  5. [Clear and Revoke(消去して取り消す)]を選択します。

ログと通知

Auth0テナントの管理者はAuth0が受信したユニバーサルログアウト要求のステータスや詳細を確認することができます。これを行うには、[Auth0 Dashboard]>[Monitoring(モニタリング)]>[Logs(ログ)]に移動します。ユニバーサルログアウトで出力されるログイベントの種類は、「ログインベントタイプのコード」に記載されています。

また、カスタムログストリームで統合して、発生したユニバーサルログアウトのイベントを外部システムに通知することもできます。

Management API

Management APIを使用して、ユニバーサルログアウトをプログラムで構成することもできます。これは、構成の自動化や、Auth0 Dashboardの外部で独自の構成を構築する場合に役立ちます。

Okta WorkforceやOpenID Connectの接続では、Management APIへの入力は必要ありません。Auth0のグローバルトークン取り消しエンドポイントをOkta Workforce管理者に提供するだけで済みます。

SAML接続ではエンドポイントのURLを共有する他にも、以下の属性をconnectionオブジェクに設定してユニバーサルログアウトを構成する必要があります。

  • options.global_token_revocation_jwt_iss - Okta Workforce Identity Cloudに登録されているSAMLアプリケーションの発行者IDです。値の例:http://www.okta.com/exkhwkmkwhZUnuA6xxxx

  • options.global_token_revocation_jwt_sub - Okta Workforce Identity Cloudに登録されているSAMLアプリケーションのアプリケーションIDです。値の例:0oagcc12354688xxxx

これらの属性を含めてManagement APIを呼び出し、SAML接続を更新または作成します。要求を作成する際には、以下のJSONの例を参考にしてください。

{
	"strategy": "samlp",
  	"name": "CONNECTION_NAME",
  	"options": {
    	"global_token_revocation_jwt_iss": "ISS_VALUE", 
     	"global_token_revocation_jwt_sub":  "SUB_VALUE",
    	"signInEndpoint": "SIGN_IN_ENDPOINT_URL",
    	"signOutEndpoint": "SIGN_OUT_ENDPOINT_URL",
    	"signatureAlgorithm": "rsa-sha256",
    	"digestAlgorithm": "sha256",
    	"fieldsMap": {
     		...
    	},
    	"signingCert": "BASE64_SIGNING_CERT"
  	}
}

Was this helpful?

/

詳細については、「Management APIを使用してエンタープライズ接続を作成する」をお読みください。