【发布时间】:2020-03-17 19:41:06
【问题描述】:
在spring-security-oauth2:2.4.0.RELEASE 中,OAuth2RestTemplate、OAuth2ProtectedResourceDetails 和 ClientCredentialsAccessTokenProvider 等类都已被标记为已弃用。
从这些类的 javadoc 中,它指向 spring security migration guide,暗示人们应该迁移到核心 spring-security 5 项目。但是,我很难找到如何在这个项目中实现我的用例。
如果您希望对应用程序的传入请求进行身份验证并且希望使用第 3 方 OAuth 提供程序来验证身份,所有文档和示例都讨论了与第 3 部分 OAuth 提供程序的集成。
在我的用例中,我要做的就是向受 OAuth 保护的外部服务发出带有 RestTemplate 的请求。目前,我使用我的客户 ID 和密码创建了一个 OAuth2ProtectedResourceDetails,并将其传递给 OAuth2RestTemplate。我还在OAuth2ResTemplate 中添加了一个自定义ClientCredentialsAccessTokenProvider,它只是为我正在使用的OAuth 提供程序所需的令牌请求添加了一些额外的标头。
在 spring-security 5 文档中,我找到了一个提到 customising the token request 的部分,但这看起来是在使用第 3 方 OAuth 提供者验证传入请求的上下文中。目前尚不清楚如何将它与ClientHttpRequestInterceptor 之类的东西结合使用,以确保对外部服务的每个传出请求首先获得一个令牌,然后将其添加到请求中。
此外,在上面链接的迁移指南中,还提到了 OAuth2AuthorizedClientService,它说它对于在拦截器中使用很有用,但这看起来又依赖于 ClientRegistrationRepository 之类的东西,这似乎是它维护注册的地方如果您想使用该提供来确保传入的请求经过身份验证,则适用于第三方提供程序。
我有什么方法可以利用 spring-security 5 中的新功能来注册 OAuth 提供程序,以便获取令牌以添加到我的应用程序的传出请求中?
【问题讨论】:
标签: java spring-boot spring-security spring-security-oauth2