クラス ServletOAuth2AuthorizedClientExchangeFilterFunction

java.lang.ObjectSE
org.springframework.security.oauth2.client.web.reactive.function.client.ServletOAuth2AuthorizedClientExchangeFilterFunction
実装されたすべてのインターフェース:
org.springframework.web.reactive.function.client.ExchangeFilterFunction

public final class ServletOAuth2AuthorizedClientExchangeFilterFunction extends ObjectSE implements org.springframework.web.reactive.function.client.ExchangeFilterFunction
access token をベアラートークンとして含めることにより、OAuth2AuthorizedClient を使用して OAuth 2.0 リクエストを行う簡単なメカニズムを提供します。

: このクラスは、Servlet 環境で使用するためのものです。

使用例:

 ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2 = new ServletOAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
 WebClient webClient = WebClient.builder()
    .apply(oauth2.oauth2Configuration())
    .build();
 Mono<String> response = webClient
    .get()
    .uri(uri)
    .attributes(oauth2AuthorizedClient(authorizedClient))
    // ...
    .retrieve()
    .bodyToMono(String.class);
 

認証と認可の失敗

5.3 以降、このフィルター機能には、認証(HTTP 401 Unauthorized)および認可(HTTP 403 Forbidden)の障害を OAuth 2.0 リソースサーバーから OAuth2AuthorizationFailureHandler に転送する機能があります。RemoveAuthorizedClientOAuth2AuthorizationFailureHandler を使用して、キャッシュされた OAuth2AuthorizedClient を削除できます。これにより、将来のリクエストにより、新しいトークンが認可サーバーから取得され、リソースサーバーに送信されます。

ServletOAuth2AuthorizedClientExchangeFilterFunction(ClientRegistrationRepository, OAuth2AuthorizedClientRepository) コンストラクターを使用すると、RemoveAuthorizedClientOAuth2AuthorizationFailureHandler が自動的に構成されます。

ServletOAuth2AuthorizedClientExchangeFilterFunction(OAuth2AuthorizedClientManager) コンストラクターを使用する場合、RemoveAuthorizedClientOAuth2AuthorizationFailureHandler は自動的に構成されませんsetAuthorizationFailureHandler(OAuth2AuthorizationFailureHandler) 経由で設定することをお勧めします。

導入:
5.1
関連事項:
  • コンストラクターの詳細

    • ServletOAuth2AuthorizedClientExchangeFilterFunction

      public ServletOAuth2AuthorizedClientExchangeFilterFunction()
    • ServletOAuth2AuthorizedClientExchangeFilterFunction

      public ServletOAuth2AuthorizedClientExchangeFilterFunction(OAuth2AuthorizedClientManager authorizedClientManager)
      指定されたパラメーターを使用して ServletOAuth2AuthorizedClientExchangeFilterFunction を構築します。

      このコンストラクターを使用すると、OAuth 2.0 リソースサーバーから返された認証(HTTP 401)および認可(HTTP 403)の失敗は OAuth2AuthorizationFailureHandler に転送されません。リソースサーバーへの今後のリクエストでは、同じ(無効である可能性が高い)トークンが使用される可能性が高く、その結果、リソースサーバーから同じエラーが返されます。リソースサーバーから返された認証と認可の失敗により認可済みのクライアントが削除され、今後のリクエストで新しいトークンが取得されるように、setAuthorizationFailureHandler(OAuth2AuthorizationFailureHandler) を介して RemoveAuthorizedClientOAuth2AuthorizationFailureHandler を構成することをお勧めします。

      パラメーター:
      authorizedClientManager - 認可されたクライアントを管理する OAuth2AuthorizedClientManager
      導入:
      5.2
    • ServletOAuth2AuthorizedClientExchangeFilterFunction

      public ServletOAuth2AuthorizedClientExchangeFilterFunction(ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientRepository authorizedClientRepository)
      指定されたパラメーターを使用して ServletOAuth2AuthorizedClientExchangeFilterFunction を構築します。

      5.3 以降、このコンストラクターを使用すると、OAuth 2.0 リソースサーバーから返された認証(HTTP 401)および認可(HTTP 403)の失敗は RemoveAuthorizedClientOAuth2AuthorizationFailureHandler に転送され、OAuth に応じて、指定された OAuth2AuthorizedClientRepository から OAuth2AuthorizedClient が削除される可能性があります 2.0 エラーコードが返されました。OAuth 2.0 リソースサーバーから返される認証の失敗は、通常、トークンが無効であることを示しており、今後のリクエストでは使用しないでください。認可されたクライアントをリポジトリから削除すると、既存のトークンがリソースサーバーへの今後のリクエストで送信されなくなり、新しいトークンが認可サーバーから取得され、リソースサーバーへの今後のリクエストで使用されます。

      パラメーター:
      clientRegistrationRepository - クライアント登録のリポジトリ
      authorizedClientRepository - 認可されたクライアントのリポジトリ
  • メソッドの詳細

    • setDefaultOAuth2AuthorizedClient

      public void setDefaultOAuth2AuthorizedClient(boolean defaultOAuth2AuthorizedClient)
      true の場合、現在の認証からデフォルトの OAuth2AuthorizedClient を発見できます。現在の認証から解決できる場合、すべての HTTP リクエストがアクセストークンを受信するため、この機能には注意が必要です。
      パラメーター:
      defaultOAuth2AuthorizedClient - デフォルトの OAuth2AuthorizedClient を使用する必要がある場合は true、そうでない場合は false。デフォルトは false です。
    • setDefaultClientRegistrationId

      public void setDefaultClientRegistrationId(StringSE clientRegistrationId)
      設定されている場合、デフォルトの ClientRegistration.getRegistrationId() として使用されます。すべての HTTP リクエストはアクセストークンを受信するため、この機能には注意が必要です。
      パラメーター:
      clientRegistrationId - 使用する ID
    • setSecurityContextHolderStrategy

      public void setSecurityContextHolderStrategy(SecurityContextHolderStrategy securityContextHolderStrategy)
      使用する SecurityContextHolderStrategy を設定します。デフォルトのアクションは、SecurityContextHolder に格納されている SecurityContextHolderStrategy を使用することです。
      導入:
      5.8
    • oauth2Configuration

      public ConsumerSE<org.springframework.web.reactive.function.client.WebClient.Builder> oauth2Configuration()
      defaultRequest() でビルダーを構成し、これを ExchangeFilterFunction として追加します
      戻り値:
      ビルダーを構成するための ConsumerSE
    • defaultRequest

      public ConsumerSE<org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec<?>> defaultRequest()
      RequestContextHolder を使用して HttpServletRequest および HttpServletResponse のデフォルトを提供します。また、SecurityContextHolder を使用して Authentication のデフォルトを提供します。clientRegistrationId(String) または authentication(Authentication) を使用して、OAuth2AuthorizedClient をデフォルト設定することもできます。
      戻り値:
      属性を移入する ConsumerSE
    • oauth2AuthorizedClient

      public static ConsumerSE<MapSE<StringSE,ObjectSE>> oauth2AuthorizedClient(OAuth2AuthorizedClient authorizedClient)
      ClientRequest.attributes() を変更して、ベアラートークンの提供に使用される OAuth2AuthorizedClient を含めます。
      パラメーター:
      authorizedClient - 使用する OAuth2AuthorizedClient
      戻り値:
      属性を移入する ConsumerSE
    • clientRegistrationId

      public static ConsumerSE<MapSE<StringSE,ObjectSE>> clientRegistrationId(StringSE clientRegistrationId)
      ClientRequest.attributes() を変更して、OAuth2AuthorizedClient の検索に使用される ClientRegistration.getRegistrationId() を組み込みます。
      パラメーター:
      clientRegistrationId - OAuth2AuthorizedClient の検索に使用される ClientRegistration.getRegistrationId()
      戻り値:
      属性を移入する ConsumerSE
    • authentication

      public static ConsumerSE<MapSE<StringSE,ObjectSE>> authentication(Authentication authentication)
      ClientRequest.attributes() を変更して、OAuth2AuthorizedClient の検索と保存に使用される Authentication を含めます。defaultRequest() のデフォルト値
      パラメーター:
      authentication - 使用する Authentication
      戻り値:
      属性を移入する ConsumerSE
    • httpServletRequest

      public static ConsumerSE<MapSE<StringSE,ObjectSE>> httpServletRequest(jakarta.servlet.http.HttpServletRequest request)
      ClientRequest.attributes() を変更して、OAuth2AuthorizedClient の検索と保存に使用される HttpServletRequest を含めます。defaultRequest() のデフォルト値
      パラメーター:
      request - 使用する HttpServletRequest
      戻り値:
      属性を移入する ConsumerSE
    • httpServletResponse

      public static ConsumerSE<MapSE<StringSE,ObjectSE>> httpServletResponse(jakarta.servlet.http.HttpServletResponse response)
      ClientRequest.attributes() を変更して、OAuth2AuthorizedClient の保存に使用される HttpServletResponse を含めます。defaultRequest() のデフォルト値
      パラメーター:
      response - 使用する HttpServletResponse
      戻り値:
      属性を移入する ConsumerSE
    • setAuthorizationFailureHandler

      public void setAuthorizationFailureHandler(OAuth2AuthorizationFailureHandler authorizationFailureHandler)
      OAuth 2.0 リソースサーバーと通信するときに認証と認可の失敗を処理する OAuth2AuthorizationFailureHandler を設定します。

      例: RemoveAuthorizedClientOAuth2AuthorizationFailureHandler は通常、キャッシュされた OAuth2AuthorizedClient を削除するために使用されます。これにより、リソースサーバーへの将来のリクエストで同じトークンが使用されなくなります。

      デフォルトで使用される失敗ハンドラーは、この ServletOAuth2AuthorizedClientExchangeFilterFunction を構築するために使用されたコンストラクターによって異なります。詳細については、コンストラクターを参照してください。

      パラメーター:
      authorizationFailureHandler - 認証および認可の失敗を処理する OAuth2AuthorizationFailureHandler
      導入:
      5.3
    • filter

      public reactor.core.publisher.Mono<org.springframework.web.reactive.function.client.ClientResponse> filter(org.springframework.web.reactive.function.client.ClientRequest request, org.springframework.web.reactive.function.client.ExchangeFunction next)
      次で指定:
      インターフェース org.springframework.web.reactive.function.client.ExchangeFilterFunctionfilter