【发布时间】:2020-05-27 00:50:34
【问题描述】:
我需要在我的 Spring Boot 应用程序的服务层获取访问令牌 (grant_type = client_credentials) 以与其他微服务通信(服务到服务交互)。这一层没有spring http session 或auth,我只有client_id、client_secret 和token url。这些属性在 application.properties 中设置为:
spring.security.oauth2.client.registration.auth1.client-id=***
spring.security.oauth2.client.registration.auth1.client-secret=***
spring.security.oauth2.client.registration.auth1.authorization-grant-type=client_credentials
spring.security.oauth2.client.provider.auth1.tokenUri=***
这对于 Spring Security OAuth 来说似乎很简单,但对于 Spring security 却无法解决。参考了 spring security 5 的文档,但一切似乎都在 web 界面的上下文中。我知道我可以使用我拥有的信息进行 http 调用以获取令牌,但我想利用该框架...
场景: 让我们将此 Spring Boot 应用程序服务称为 A。还有其他服务可能会调用 A 来处理 http 上的更新或在 A 侦听的主题上发送 kafka 消息。当 A 处理更新/消息时,它需要向服务 B 发送一些数据,这需要访问令牌以进行 authz。这是我需要访问令牌的地方。所以交互本质上是服务-服务,并不特定于用户。
【问题讨论】:
-
OAuth2RestTemplate是 Spring Security OAuth 的一个 API,一个单独的插件项目。 OP 正在寻求使用 Spring Security 的内置支持。
标签: java spring spring-boot spring-security oauth-2.0