我想使用 Crnk Client 3.4 来使用受 OAuth2 保护的 JSON:API 端点。我正在使用client_credentials
授权和 Spring Security OAuth2(带引导)来配置凭据。
由于 Spring 团队决定尝试强制每个人使用响应式 WebClient,因此没有开箱即用的 RestTemplate 拦截器可以从 Spring Security OAuth2 检索访问令牌,这表明我必须做一些我自己的集成。
是否有向CrnkClient
实例提供访问令牌的最佳实践?该文档SecurityModule
顺便提到,但它似乎并不真正支持添加凭据。我可以编写一个模块,但似乎要添加我想要实现的标头HttpAdapterListener
,并且模块不提供注册它们的机制;相反,他们有HttpRequestProcessor
,客户端根本不使用。
我可以看到两个可能的干净集成选项;这些是推荐的还是不鼓励的?
- 编写缺少
ClientHttpRequestInterceptor
的集成 Spring Security OAuth2。使用并添加 OAuth2 拦截器RestTemplate
在 bean 方法中创建一个。RestTemplateBuilder
打电话crnkClient.setHttpAdapter(new RestTemplateAdapter(interceptedRt))
。 - 编写一个 Crnk
Module
实现HttpAdapterAware
,它是一个 Spring bean,并提供一个HttpAdapterListener
检索访问令牌并调用HttpAdapterRequest#header
.