替换OAuth2RestTemplate的Spring Security 5

问题描述 投票:5回答:1

spring-security-oauth2:2.4.0.RELEASEOAuth2RestTemplateOAuth2ProtectedResourceDetails之类的类中,都已被标记为已弃用。

从这些类上的javadoc指向ClientCredentialsAccessTokenProvider,它暗示人们应该迁移到核心spring-security 5项目。但是,我在寻找如何在该项目中实现用例时遇到了麻烦。

所有文档和示例都讨论了与第三方OAuth提供程序集成的情况,如果您希望对应用程序的传入请求进行身份验证,并且希望使用第三方OAuth提供程序来验证身份。

在我的用例中,我要做的就是向受OAuth保护的外部服务发出带有spring security migration guide的请求。目前,我用客户ID和密码创建一个RestTemplate,并将其传递给OAuth2ProtectedResourceDetails。我还向OAuth2RestTemplate添加了一个自定义ClientCredentialsAccessTokenProvider,它仅向我正在使用的OAuth提供程序所需的令牌请求中添加了一些额外的标头。

[在spring-security 5文档中,我找到了一个提到OAuth2ResTemplate的部分,但又一次看起来是在与第三方OAuth提供者验证传入请求的上下文中。目前尚不清楚如何将其与customising the token request之类的东西结合使用,以确保对外部服务的每个传出请求都首先获得令牌,然后再将令牌添加到请求中。

此外,在上面链接的迁移指南中,还引用了ClientHttpRequestInterceptor,它说对在拦截器中使用很有用,但是看起来它仍然依赖于OAuth2AuthorizedClientService之类的东西,该东西似乎在其中维护了注册信息。第三方提供商(如果要使用该提供商)以确保对传入请求进行身份验证。

有什么方法可以利用spring-security 5中的新功能来注册OAuth提供程序,以便获得令牌以添加到应用程序的传出请求中?

java spring-boot spring-security spring-security-oauth2
1个回答
0
投票

HTTP客户端支持

Spring Security Reference用于Servlet环境的集成(用于请求受保护的资源)

    此外,WebClient将在以后的版本中弃用。参见RestTemplate
  • NOTE:从5.0开始,无阻塞,反应性RestTemplate javadoc提供了现代有效支持两个同步的org.springframework.web.reactive.client.WebClient替代以及异步以及流式传输方案。 RestTemplate将是在将来的版本中已弃用,并且不会具有主要的新功能添加了前进的方向。参见Spring框架的RestTemplate部分参考文档以获取更多详细信息和示例代码。

    因此,最佳解决方案是将WebClient放弃而改为RestTemplate

© www.soinside.com 2019 - 2024. All rights reserved.