クラス ServletOAuth2AuthorizedClientExchangeFilterFunction
- 実装されたすべてのインターフェース:
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)
経由で設定することをお勧めします。
コンストラクターのサマリー
コンストラクターコンストラクター説明ServletOAuth2AuthorizedClientExchangeFilterFunction
(OAuth2AuthorizedClientManager authorizedClientManager) 指定されたパラメーターを使用してServletOAuth2AuthorizedClientExchangeFilterFunction
を構築します。ServletOAuth2AuthorizedClientExchangeFilterFunction
(ClientRegistrationRepository clientRegistrationRepository, OAuth2AuthorizedClientRepository authorizedClientRepository) 指定されたパラメーターを使用してServletOAuth2AuthorizedClientExchangeFilterFunction
を構築します。メソッドのサマリー
修飾子と型メソッド説明static ConsumerSE<MapSE<StringSE,
ObjectSE>> authentication
(Authentication authentication) static ConsumerSE<MapSE<StringSE,
ObjectSE>> clientRegistrationId
(StringSE clientRegistrationId) ClientRequest.attributes()
を変更して、OAuth2AuthorizedClient
の検索に使用されるClientRegistration.getRegistrationId()
を組み込みます。ConsumerSE<org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec<?>>
RequestContextHolder
を使用してHttpServletRequest
およびHttpServletResponse
のデフォルトを提供します。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) static ConsumerSE<MapSE<StringSE,
ObjectSE>> httpServletRequest
(jakarta.servlet.http.HttpServletRequest request) static ConsumerSE<MapSE<StringSE,
ObjectSE>> httpServletResponse
(jakarta.servlet.http.HttpServletResponse response) static ConsumerSE<MapSE<StringSE,
ObjectSE>> oauth2AuthorizedClient
(OAuth2AuthorizedClient authorizedClient) ClientRequest.attributes()
を変更して、ベアラートークンの提供に使用されるOAuth2AuthorizedClient
を含めます。ConsumerSE<org.springframework.web.reactive.function.client.WebClient.Builder>
defaultRequest()
でビルダーを構成し、これをExchangeFilterFunction
として追加しますvoid
setAuthorizationFailureHandler
(OAuth2AuthorizationFailureHandler authorizationFailureHandler) OAuth 2.0 リソースサーバーと通信するときに認証と認可の失敗を処理するOAuth2AuthorizationFailureHandler
を設定します。void
setDefaultClientRegistrationId
(StringSE clientRegistrationId) 設定されている場合、デフォルトのClientRegistration.getRegistrationId()
として使用されます。void
setDefaultOAuth2AuthorizedClient
(boolean defaultOAuth2AuthorizedClient) true の場合、現在の認証からデフォルトのOAuth2AuthorizedClient
を発見できます。void
setSecurityContextHolderStrategy
(SecurityContextHolderStrategy securityContextHolderStrategy) 使用するSecurityContextHolderStrategy
を設定します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSE
インターフェース org.springframework.web.reactive.function.client.ExchangeFilterFunction から継承されたメソッド
andThen, apply
コンストラクターの詳細
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
設定されている場合、デフォルトの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
として追加します- 戻り値:
- ビルダーを構成するための
Consumer
SE
defaultRequest
public ConsumerSE<org.springframework.web.reactive.function.client.WebClient.RequestHeadersSpec<?>> defaultRequest()RequestContextHolder
を使用してHttpServletRequest
およびHttpServletResponse
のデフォルトを提供します。また、SecurityContextHolder
を使用してAuthentication
のデフォルトを提供します。clientRegistrationId(String)
またはauthentication(Authentication)
を使用して、OAuth2AuthorizedClient
をデフォルト設定することもできます。- 戻り値:
- 属性を移入する
Consumer
SE
oauth2AuthorizedClient
public static ConsumerSE<MapSE<StringSE,ObjectSE>> oauth2AuthorizedClient(OAuth2AuthorizedClient authorizedClient) ClientRequest.attributes()
を変更して、ベアラートークンの提供に使用されるOAuth2AuthorizedClient
を含めます。- パラメーター:
authorizedClient
- 使用するOAuth2AuthorizedClient
。- 戻り値:
- 属性を移入する
Consumer
SE
clientRegistrationId
public static ConsumerSE<MapSE<StringSE,ObjectSE>> clientRegistrationId(StringSE clientRegistrationId) ClientRequest.attributes()
を変更して、OAuth2AuthorizedClient
の検索に使用されるClientRegistration.getRegistrationId()
を組み込みます。- パラメーター:
clientRegistrationId
-OAuth2AuthorizedClient
の検索に使用されるClientRegistration.getRegistrationId()
- 戻り値:
- 属性を移入する
Consumer
SE
authentication
ClientRequest.attributes()
を変更して、OAuth2AuthorizedClient
の検索と保存に使用されるAuthentication
を含めます。defaultRequest()
のデフォルト値- パラメーター:
authentication
- 使用するAuthentication
。- 戻り値:
- 属性を移入する
Consumer
SE
httpServletRequest
public static ConsumerSE<MapSE<StringSE,ObjectSE>> httpServletRequest(jakarta.servlet.http.HttpServletRequest request) ClientRequest.attributes()
を変更して、OAuth2AuthorizedClient
の検索と保存に使用されるHttpServletRequest
を含めます。defaultRequest()
のデフォルト値- パラメーター:
request
- 使用するHttpServletRequest
。- 戻り値:
- 属性を移入する
Consumer
SE
httpServletResponse
public static ConsumerSE<MapSE<StringSE,ObjectSE>> httpServletResponse(jakarta.servlet.http.HttpServletResponse response) ClientRequest.attributes()
を変更して、OAuth2AuthorizedClient
の保存に使用されるHttpServletResponse
を含めます。defaultRequest()
のデフォルト値- パラメーター:
response
- 使用するHttpServletResponse
。- 戻り値:
- 属性を移入する
Consumer
SE
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.ExchangeFilterFunction
のfilter