クラス ServerHttpSecurity.OidcLogoutSpec.BackChannelLogoutConfigurer

java.lang.ObjectSE
org.springframework.security.config.web.server.ServerHttpSecurity.OidcLogoutSpec.BackChannelLogoutConfigurer
含まれているクラス:
ServerHttpSecurity.OidcLogoutSpec

public final class ServerHttpSecurity.OidcLogoutSpec.BackChannelLogoutConfigurer extends ObjectSE
OIDC バックチャネルログアウトを構成するためのコンフィギュラー
  • コンストラクターの詳細

    • BackChannelLogoutConfigurer

      public BackChannelLogoutConfigurer()
  • メソッドの詳細

    • logoutUri

      バックチャネルログアウトを呼び出すときにこのエンドポイントを使用します。

      結果として得られる LogoutHandler は、セッション Cookie と CSRF トークンをこのエンドポイントに POST 送信し、対応するエンドユーザーセッションを無効にします。

      {baseUrl}{baseScheme}{basePort} のような URI テンプレートをサポートします。

      デフォルトでは、URI は {baseUrl}/logout/connect/back-channel/{registrationId} に設定されており、元のバックチャネルリクエストのスキームとポートは保持されますが、ホストとエンドポイントは変更されます。

      ログアウトエンドポイントに Spring Security を使用している場合、この URI のパス部分は、そこで構成された値と一致する必要があります。

      それ以外の場合、サーバー構成によって、Host ヘッダー内のスキーム、サーバー名、ポートが、同じサーバーを内部的にアドレス指定する方法と異なる場合に、これが便利です。

      パラメーター:
      logoutUri - バックチャネルでログアウトをリクエストする URI
      戻り値:
      さらにカスタマイズするための ServerHttpSecurity.OidcLogoutSpec.BackChannelLogoutConfigurer
      導入:
      6.2.4
    • logoutHandler

      セッションごとのログアウトの内容と方法を設定します。

      これは logoutUri(String) に与えられた値を上書きします

      デフォルトでは、結果として得られる LogoutHandler は、セッション Cookie と OIDC ログアウトトークンを元のバックチャネルログアウトエンドポイントに POST で戻します。

      このメソッドを使用すると、POST がセッション Cookie と CSRF トークンをアプリケーションの /logout エンドポイントに送信するという基礎となるデフォルトが変更されます。そのため、他の変更を必要としない場合でも、特別な CSRF 構成は必要ないため、/logout のデフォルトを受け入れる代わりにこれを呼び出すことをお勧めします。

      例: バックチャネルログアウトを次のように構成します。

              http
              .oidcLogout((oidc) -> oidc
                      .backChannel((backChannel) -> backChannel
                              .logoutHandler(new OidcBackChannelServerLogoutHandler())
                      )
              );
       
      セッションごとのログアウト呼び出しに特別な CSRF 構成が必要なくなるようになります。

      デフォルトの URI は {baseUrl}/logout/connect/back-channel/{registrationId} です。これは、バックチャネルサービスに公開されている同じエンドポイントの内部バージョンです。OidcBackChannelServerLogoutHandler.setLogoutUri(String) を使用して、Host ヘッダーのスキーム、サーバー名、ポートを変更し、アプリケーションが内部で自身をアドレス指定する方法に合わせることができます。

      たとえば、アプリケーションが内部的に自身を呼び出す方法が、受信トラフィックとは異なるスキームとポートである場合、エンドポイントを次のように構成できます。

              http
                      .oidcLogout((oidc) -> oidc
                              .backChannel((backChannel) -> backChannel
                                      .logoutUri("http://localhost:9000/logout/connect/back-channel/{registrationId}")
                              )
                      );
       

      次のように @Bean として公開することもできます。

              @Bean
              OidcBackChannelServerLogoutHandler oidcLogoutHandler() {
              OidcBackChannelServerLogoutHandler logoutHandler = new OidcBackChannelServerLogoutHandler();
              logoutHandler.setLogoutUri("http://localhost:9000/logout/connect/back-channel/{registrationId}");
              return logoutHandler;
              }
       
      同じ効果が得られます。
      パラメーター:
      logoutHandler - ServerLogoutHandler は各セッションごとに使用する
      戻り値:
      さらなるカスタマイズのための ServerHttpSecurity.OidcLogoutSpec.BackChannelLogoutConfigurer
      導入:
      6.4