使用启用 Spring OAuth2 客户端的 WebClient 时的异常处理

问题描述

我使用 Spring 非常方便的 spring-boot-starter-oauth2-client 库配置了启用 OAuth2 的 WebClient。当我向我的 OAuth2 安全资源服务器 API 发出请求时,它在获取和管理令牌方面工作得很好

我想向 WebClient 添加全局异常处理,以处理对我的资源服务器的请求引起的异常。遵循 this article 中概述的方法ExchangeFilterFunction 看起来不错。

我只是想知道,由于 WebClient 已经应用了 ServletoAuth2AuthorizedClientExchangeFilterFunction添加额外的过滤器是否会对与 OAuth2 授权服务器的交互产生任何影响?

这是我当前的 WebClient 配置:

@Bean
public WebClient edmsDataIntegrationServiceWebClient(OAuth2AuthorizedClientManager authorizedClientManager) {
    ServletoAuth2AuthorizedClientExchangeFilterFunction oauth2client =
            new ServletoAuth2AuthorizedClientExchangeFilterFunction(authorizedClientManager);
    oauth2client.setDefaultClientRegistrationId("my-auth-server");

    return WebClient.builder()
            .baseUrl(baeUrl)
            .apply(oauth2client.oauth2Configuration())
            .build();
}

所以额外的过滤器类似于 here 概述的方法,其中 handleResourceServerError() 将返回一个 ExchangeFilterFunction 来处理由我的资源服务器引起的异常回复

return WebClient.builder()
        .baseUrl(baeUrl)
        .apply(oauth2client.oauth2Configuration())
        .filter(WebClientFilter.handleResourceServerError()) //handles exceptions caused by resource server response
        .build();

在不破坏任何 ServletoAuth2AuthorizedClientExchangeFilterFunction 功能的情况下,上述方法是否可行?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)