NSX Advanced Load Balancer の 22.1.3 バージョンでは、OpenID に対するクライアント/証明書利用者 (RP) が開始したログアウトがサポートされています。OAuth クライアント (RP) として、NSX Advanced Load Balancer は、ユーザー エージェントを IDP のログアウト エンドポイントにリダイレクトすることで ID プロバイダ (IDP) にログアウトするよう指示する要求を開始します。

注:

RP が開始したログアウトは、OIDC が有効になっている場合にのみ適用されます。

コントローラが開始したログアウト フロー



コントローラが開始したログアウトのフローについては、以下で説明します。

  1. リソース所有者またはユーザーは、アプリケーションによって提供される [ログアウト] ボタンをクリックし、NSX Advanced Load Balancer で構成されるログアウト URI(例:/oauth/logout)に移動します。

    注:

    [ログアウト] ボタンは、NSX Advanced Load Balancer ではなくアプリケーションによって提供されます。

  2. アプリケーションまたはブラウザはログアウト要求を NSX Advanced Load Balancer に送信します。

  3. NSX Advanced Load Balancer は、セッション DB からユーザーのセッションの詳細をクリアします。

  4. NSX Advanced Load Balancer は、既存のアプリケーションまたはブラウザの Cookie をクリアするために無効な Cookie を使用して、認可サーバまたは IDP(NSX Advanced Load Balancer で構成される)のセッション終了エンドポイントにリダイレクト要求を送信します。

     GET https://IDP.com/end_session_endpoint?id_token_hint=id_token_issued_to_client&post_logout_redirect_uri=configured_uri 
  5. 認可サーバ/IDP は、ユーザーのセッションの詳細をクリアし、

    1. 管理者は、まず IDP(例:okta)側で、ログアウトの実行後に IDP がユーザーをリダイレクトする post_logout_redirect_uri を構成する必要があります。

    2. 手順 a が完了しない場合、NSX Advanced Load Balancerpost_logout_redirect_uri を構成します。

  6. 認可サーバ/IDP は、post_logout_redirect_uri にある NSX Advanced Load Balancer エンドポイントにリダイレクトします。

  7. ユーザーは正常にログアウトできます。

  8. ログアウトに成功したら、ユーザーはリソースに再度アクセスするために認証情報を入力する必要があり、NSX Advanced Load Balancer は OAuth ログイン フローを開始します。

注:

上記のフローは、[ログアウト] ボタンをクリックしたときにクライアントによって有効なセッション Cookie が送信された場合にのみ適用されます。

URI エンドポイント

RP が開始したログアウトの 3 つの URI エンドポイントは次のとおりです。

ログアウト URI(必須):

このエンドポイントは NSX Advanced Load Balancer で構成され、アプリケーションの [ログアウト] ボタンをクリックするとこのエンドポイントに移動します。

セッション終了エンドポイント(必須):

このエンドポイントは NSX Advanced Load Balancer で構成され、IDP によって提供されます。

ログアウト後リダイレクト URI(推奨):

ログアウトが実行された後、RP の要求によってエンド ユーザーのユーザー エージェントをリダイレクトするエンドポイント URI。IDP と NSX Advanced Load Balancer で同じ値を構成する必要があります。

ユーザー インターフェイスを使用した RP が開始したログアウトの構成

OIDC の前提条件となる構成手順の詳細については、上記の「OAuth/OIDC のクライアントとリソース サーバ」セクションを参照してください。

[アプリケーション] > [仮想サービス] の順に移動します。

  1. [作成] をクリックするか、既存の仮想サービスを編集します。

  2. [ポリシー ] > [アクセス] の順に移動します。

  3. [アクセス ポリシー] で、[OAuth] を選択します。

  4. [セッション終了エンドポイント] を構成して、[認証プロファイル][作成] または編集します。



  5. [アクセス ポリシー] で、フィールドに詳細を入力します。

  6. 次に示すように、[ログアウト URI][ログアウト後リダイレクト URI] を入力します。



  7. [保存] をクリックします。

CLI を使用した RP が開始したログアウトの構成

ここでは、OIDC の前提条件となる構成手順について説明します。

  1. end_session_endpoint または IDP(例:okta)のログアウト URI を使用して、authprofile の OAuth oauth_profile を構成します。

     [admin: controller]: > configure authprofile okta-oauth
     [admin: controller]:authprofile > oauth_profile
     [admin: controller]:authprofile:oauth_profile> end_session_endpoint https://dev-477407.oktapreview.com/oauth2/v1/logout
     [admin: controller]:authprofile:oauth_profile>save
     [admin: controller]:authprofile>save
     [admin: controller]:>
    
  2. configure virtualservice <VS_NAME> コマンドを使用して oidc_enabletrue に設定して、OAuth 対応の仮想サービスを構成します。

     [admin: controller] configure virtualservice okta-test 
  3. 仮想サービスの oauth_vs_config サブモジュールで、logout_uripost_logout_redirect_uri を構成します。

    [admin: controller]:virtualservice> oauth_vs_config
     [admin: controller]:virtualservice:oauth_vs_config> logout_uri https://okta-test.auth.com/oauth/logout
     [admin: controller]:virtualservice:oauth_vs_config> post_logout_redirect_uri https://okta-test.auth.com/
     [admin: controller]:virtualservice:oauth_vs_config> save
     [admin: controller]:virtualservice> save
     [admin: controller]:>
    

出力:

[admin:controller]: virtualservice> oauth_vs_config
[admin:controller]: virtualservice:oauth_vs_config> where
Tenant: admin
Cloud: Default-Cloud
+--------------------------+-------------------------------------------------+
| Field                    | Value                                           |
+--------------------------+-------------------------------------------------+
| redirect_uri             | https://okta-test.auth.com/oauth/callback       |
| cookie_name              | OAUTH_IUPKWGLH                                  |
| cookie_timeout           | 1 min                                           |
| oauth_settings[1]        |                                                 |
|   auth_profile_ref       | okta-oauth                                      |
|   app_settings           |                                                 |
|     oidc_config          |                                                 |
|       oidc_enable        | True                                            |
|       profile            | True                                            |
|       userinfo           | True                                            |
|     client_id            | 0oaubdgcuk6wLEfKq0h7                            |
|     client_secret        | <sensitive>                               |
|   resource_server        |                                                 |
|     access_type          | ACCESS_TOKEN_TYPE_OPAQUE                        |
|     opaque_token_params  |                                                 |
|       server_id          | 0oaubdgcuk6wLEfKq0h7                            |
|       server_secret      | <sensitive>                               |
| key[1]                   |                                                 |
|   name                   | dc7dde0a-8a64-45b4-8ded-f65adb03c2a4            |
|   aes_key                | b'sdZFYlVECVu9aW7XK4IhVaC8TfakvNSvp6m861tyVNc=' |
|     logout_uri           | https://okta-test.auth.com/oauth/logout         |
| post_logout_redirect_uri | https://okta-test.auth.com/                     |

次に示すように、authprofileend_session_endpoint を構成します。

[admin:controller]: > show authprofile okta-oauth
+--------------------------+---------------------------------------------------------+
| Field                    | Value                                                   |
+--------------------------+---------------------------------------------------------+
| uuid                     | authprofile-998740b9-5123-4d4d-8fb9-f9f9a3886248        |
| name                     | okta-oauth                                              |
| type                     | AUTH_PROFILE_OAUTH                                      |
| oauth_profile            |                                                         |
|   authorization_endpoint | https://dev-477407.oktapreview.com/oauth2/v1/authorize  |
|   token_endpoint         | https://dev-477407.oktapreview.com/oauth2/v1/token      |
|   introspection_endpoint | https://dev-477407.oktapreview.com/oauth2/v1/introspect |
|   jwks_uri               | https://dev-477407.oktapreview.com/oauth2/v1/keys       |
|   jwks_timeout           | 0 min                                                   |
|   issuer                 | https://dev-477407.oktapreview.com                      |
|   pool_ref               | pool-okta                                               |
|   oauth_resp_buffer_sz   | 1000000                                                 |
|   userinfo_endpoint      | https://dev-477407.oktapreview.com/oauth2/v1/userinfo   |
|   end_session_endpoint   | https://dev-477407.oktapreview.com/oauth2/v1/logout     |
| tenant_ref               | admin                                                   |
+--------------------------+---------------------------------------------------------+
注:
  1. [ログアウト URI] は、OIDC が有効な場合にのみ適用されます。

  2. [ログアウト URI] を構成するには、セッション終了エンドポイントを構成する必要があります。

  3. [ログアウト URI] が構成されている場合、セッション終了エンドポイントを削除できません。セッション終了エンドポイントを削除するには、[ログアウト URI] に値を設定しないでください。