当前位置: 首页 > 知识库问答 >
问题:

带有WebClient和OAuth客户端凭据的Spring MVC Servlet

祁俊喆
2023-03-14
@Bean
WebClient webClient(ClientRegistrationRepository clientRegistrations, OAuth2AuthorizedClientRepository authorizedClients) {
    ServletOAuth2AuthorizedClientExchangeFilterFunction oauth2 =
            new ServletOAuth2AuthorizedClientExchangeFilterFunction(clientRegistrations, authorizedClients);
    oauth2.setDefaultClientRegistrationId("cart67");
    oauth2.setDefaultOAuth2AuthorizedClient(true);
    final WebClient webClient = WebClient.builder()
            .apply(oauth2.oauth2Configuration())
            .build();
    return webClient;
}

但是现在的问题是,当从计划的作业调用时,WebClient不能调用远程资源服务器。我得到以下错误:

reactor.core.Exceptions$ErrorCallbackNotImplemented: 
           java.lang.IllegalArgumentException: request cannot be null
Caused by: java.lang.IllegalArgumentException: request cannot be null
at org.springframework.util.Assert.notNull(Assert.java:198)
Suppressed: reactor.core.publisher.FluxOnAssembly$OnAssemblyException:

如果我使用MVC控制器中的这个WebClient而不是计划的工作,事情就会很好。在这方面的任何帮助都将不胜感激。

共有1个答案

林英武
2023-03-14

这可能来自HttpSessionoAuth2AuthorizationRequestRepository,它用于将OAuth2AuthorizationRequest存储在HttpSession中。由于您的应用程序可以很好地处理由控制器处理的传入HTTP请求,因此这是有意义的。

您可能希望以不同的方式配置OAuth2AuthorizedClientRepository,并且不要将信息存储在HttpSession中。

Spring Security文档为选择和配置正确的安全文档提供了一个良好的开端。

 类似资料:
  • < li >我使用Google-API-python-client django _ sample获得了Google API的access_token。 < li >为了进行脱机访问,我添加了< code > flow . params[' access _ type ']= ' offline ' 。 < li >存储的< code > credentials _ JSON = credenti

  • 我正在尝试对“https://graph.windows.net/{{tenantId}}/accounts?api-version=1.6”进行API调用 有什么想法吗?

  • 当授权范围限于客户端控制下的受保护资源或事先与授权服务器商定的受保护资源时客户端凭据可以被用作为一种授权许可。典型的当客户端代表自己表演(客户端也是资源所有者)或者基于与授权服务器事先商定的授权请求对受保护资源的访问权限时,客户端凭据被用作为授权许可。

  • 我目前是谷歌分析API throu JavaScript的新成员。我正在实现一些图表和第一次加载,页面是重定向我到谷歌网站登录与分析帐户,然后返回到我的原始页面,刷新和图表显示。 有没有任何技巧/想法,我可以得到任何API可以解决这个问题?

  • 有人用这种方法吗?https://laravel.com/docs/5.4/passport#client-凭证授予代币 我试图使注册API只包含client_id和client_secret,我希望返回作为访问令牌、刷新令牌、过期日期,但返回www.url。com/oauth/token这是什么 有人能帮我吗?提前谢谢

  • 当客户端是资源所有者时,或者当授权范围限于受客户端控制的受保护资源时,客户端凭证可以用作授权授权。 客户端仅在客户端凭据的帮助下请求访问令牌。 客户端凭证授权流用于获取访问令牌以授权API请求。 使用客户端凭据授权,获取的访问令牌仅授予客户端应用程序搜索和获取目录文档的权限。 下图描绘了客户端凭据流。 上图所示的流程包括以下步骤 - Step 1 - 客户端使用授权服务器进行身份验证,并从令牌端点