クラス SwitchUserWebFilter

java.lang.ObjectSE
org.springframework.security.web.server.authentication.SwitchUserWebFilter
実装されたすべてのインターフェース:
org.springframework.web.server.WebFilter

public class SwitchUserWebFilter extends ObjectSE implements org.springframework.web.server.WebFilter
ユーザーコンテキストの切り替えを担当するユーザー処理フィルターを切り替えます。この機能の一般的な使用例は、権限の高いユーザー(ROLE_ADMIN など)が通常のユーザー(ROLE_USER など)に切り替えられるようにする機能です。

このフィルターは、切り替えを実行するユーザーが通常のユーザーとして(つまり、ROLE_ADMIN ロールを使用して)ログインする必要があることを前提としています。次に、ユーザーは、管理者が誰になりたいかを指定できるページ / コントローラーにアクセスします(switchUserUrl を参照)。

メモ: この URL には、そのロールのユーザーのみがアクセスできるように適切なセキュリティ制約を設定する必要があります(ROLE_ADMIN など)。

正常に切り替えられると、ユーザーの SecurityContext は指定されたユーザーを反映するように更新され、元のユーザーを含む追加の SwitchUserGrantedAuthority も含まれます。切り替える前に、ユーザーが現在切り替えられているかどうかのチェックが行われ、「入れ子」の切り替えを防ぐために現在のスイッチはすべて終了します。

ユーザーコンテキストから「終了」するには、ユーザーは ROLE_PREVIOUS_ADMINISTRATOR で識別される元のユーザーに戻る URL(exitUserUrl を参照)にアクセスする必要があります。

スイッチユーザー処理フィルターを構成するには、スイッチユーザー処理フィルターの Bean 定義を作成し、filterChainProxy に追加します。フィルターは switchUserUrl に正しい制約を適用するためには、チェーンで SecurityWebFiltersOrder.AUTHORIZATIONに来なければならないことに注意してください。例:

 SwitchUserWebFilter filter = new SwitchUserWebFilter(userDetailsService, loginSuccessHandler, failureHandler);
 http.addFilterAfter(filter, SecurityWebFiltersOrder.AUTHORIZATION);
 
導入:
5.4
関連事項:
  • フィールドの詳細

  • コンストラクターの詳細

    • SwitchUserWebFilter

      public SwitchUserWebFilter(ReactiveUserDetailsService userDetailsService, ServerAuthenticationSuccessHandler successHandler, @Nullable ServerAuthenticationFailureHandler failureHandler)
      ユーザーコンテキスト切り替え用のフィルターを作成します
      パラメーター:
      userDetailsService - 切り替えられるユーザーの情報をロードするために使用される UserDetailsService
      successHandler - 成功した切り替えまたは終了ユーザーでのカスタム動作を定義するために使用されます。
      failureHandler - スイッチが失敗したときのカスタム動作を定義するために使用されます。
    • SwitchUserWebFilter

      public SwitchUserWebFilter(ReactiveUserDetailsService userDetailsService, StringSE successTargetUrl, @Nullable StringSE failureTargetUrl)
      ユーザーコンテキスト切り替え用のフィルターを作成します
      パラメーター:
      userDetailsService - 切り替えられるユーザーの情報をロードするために使用される UserDetailsService
      successTargetUrl - ユーザーの切り替え / 終了リクエストが成功した後に移動する URL を設定します
      failureTargetUrl - 切り替えに失敗した場合にユーザーがリダイレクトされる URL
  • メソッドの詳細

    • filter

      public reactor.core.publisher.Mono<VoidSE> filter(org.springframework.web.server.ServerWebExchange exchange, org.springframework.web.server.WebFilterChain chain)
      次で指定:
      インターフェース org.springframework.web.server.WebFilterfilter 
    • switchUser

      protected reactor.core.publisher.Mono<Authentication> switchUser(WebFilterExchange webFilterExchange)
      別のユーザーに切り替えてみてください。
      パラメーター:
      webFilterExchange - Web フィルター交換
      戻り値:
      別のユーザーに正常に切り替えられた場合は新しい Authentication オブジェクト、それ以外の場合は Mono.empty()
      例外:
      AuthenticationCredentialsNotFoundException - ターゲットユーザーがユーザー名で見つからない場合
    • exitSwitchUser

      protected reactor.core.publisher.Mono<Authentication> exitSwitchUser(WebFilterExchange webFilterExchange)
      すでに切り替えられたユーザーを終了しようとしました。
      パラメーター:
      webFilterExchange - Web フィルター交換
      戻り値:
      元の Authentication オブジェクト。
      例外:
      AuthenticationCredentialsNotFoundException - このリクエストに関連付けられた Authentication がない場合、またはユーザーが切り替えられない場合。
    • getUsername

      protected StringSE getUsername(org.springframework.web.server.ServerWebExchange exchange)
      ターゲットユーザーの名前を返します。
      パラメーター:
      exchange - サーバーの Web 交換
      戻り値:
      ターゲットユーザーの名前。
    • setSecurityContextRepository

      public void setSecurityContextRepository(ServerSecurityContextRepository securityContextRepository)
      SecurityContext を永続化するためのリポジトリを設定します。デフォルトは WebSessionServerSecurityContextRepository です
      パラメーター:
      securityContextRepository - 使用するリポジトリ
    • setExitUserUrl

      public void setExitUserUrl(StringSE exitUserUrl)
      終了ユーザーの処理に応答するように URL を設定します。これは * setExitUserMatcher(ServerWebExchangeMatcher) のショートカットです
      パラメーター:
      exitUserUrl - 出口ユーザーの URL。
    • setExitUserMatcher

      public void setExitUserMatcher(ServerWebExchangeMatcher exitUserMatcher)
      終了ユーザー処理に応答するようにマッチャーを設定します。
      パラメーター:
      exitUserMatcher - 使用する出口マッチャー
    • setSwitchUserUrl

      public void setSwitchUserUrl(StringSE switchUserUrl)
      ユーザーの切り替え処理に応答する URL を設定します。これは setSwitchUserMatcher(ServerWebExchangeMatcher) のショートカットです
      パラメーター:
      switchUserUrl - ユーザー切り替え URL。
    • setSwitchUserMatcher

      public void setSwitchUserMatcher(ServerWebExchangeMatcher switchUserMatcher)
      ユーザーの切り替え処理に応答するようにマッチャーを設定します。
      パラメーター:
      switchUserMatcher - ユーザー切り替えマッチャー。