spring-security-oauth2:2.4.0.RELEASE
中,诸如 OAuth2RestTemplate
、OAuth2ProtectedResourceDetails
和 ClientCredentialsAccessTokenProvider
等类都已被标记为过时。从这些类的 javadoc 中可以看出,它们指向了一个 spring security 迁移指南,暗示人们应该迁移到核心的 spring-security 5 项目。然而,我在这个项目中找不到如何实现我的用例的方法。
所有的文档和示例都是关于与第三方 OAuth 提供者集成,如果你希望对你的应用程序的传入请求进行身份验证,并且希望使用第三方 OAuth 提供者来验证身份。
在我的使用案例中,我只想使用
RestTemplate
向受OAuth保护的外部服务发送请求。目前,我创建了一个带有客户端ID和密钥的OAuth2ProtectedResourceDetails
,并将其传递给OAuth2RestTemplate
。我还在OAuth2RestTemplate
中添加了一个自定义的ClientCredentialsAccessTokenProvider
,它只是在令牌请求中添加了一些额外的头信息,这些头信息是我使用的OAuth提供程序所需的。在spring-security 5的文档中,我找到了一个提到自定义令牌请求的部分,但是这似乎是在认证来自第三方OAuth提供程序的传入请求的上下文中。不清楚如何将其与
ClientHttpRequestInterceptor
结合使用,以确保每个发送到外部服务的请求首先获取一个令牌,然后将其添加到请求中。此外,在上面链接的迁移指南中,还提到了一个
OAuth2AuthorizedClientService
,它说这对于在拦截器中使用很有用。但是,这似乎又依赖于像ClientRegistrationRepository
这样的东西,如果您想使用该提供程序来确保传入请求已经过身份验证,那么它似乎是维护第三方提供程序的注册的地方。有没有办法利用spring-security 5中的新功能来注册OAuth提供程序,以便从我的应用程序中获取令牌并添加到外发请求中?