【发布时间】:2018-03-27 14:15:50
【问题描述】:
我尝试使用 Spring Boot 和 Keycloak 作为 AuthService 实现一个简单的 OAuth2“带有签名 JWT 的客户端身份验证”演示应用程序。
想法是:
- 一个安全的 REST 服务“生产者”
- 为角色为“read_person”的所有用户/主体提供端点 GET /person
- 为角色为“write_person”的所有用户/主体提供端点 POST /person
- 另一个(不安全的)REST 服务“消费者”
- 提供对所有人开放的 enpoint /api
- 通过
Feignclient 调用内部“生产者”,使用 RequestInterceptor 传递 AccessToken(签名的 JWT / JWS)
我阅读了有关文档:
http://www.keycloak.org/docs/latest/securing_apps/topics/oidc/java/client-authentication.html
说:
一旦客户端应用程序启动,它允许使用http://myhost.com/myapp/k_jwks 等URL 以JWKS 格式下载其公共> 密钥,>假设http://myhost.com/myapp 是您的客户端> 应用程序的基本URL。这个 URL 可以被 Keycloak 使用(见下文)。
在身份验证期间,客户端生成一个 JWT 令牌并使用 >其私钥对其进行签名,然后在 client_assertion >参数中的特定反向通道 >request(例如,代码到令牌请求)中将其发送到 Keycloak。
我在谷歌上搜索了很多关于这个主题的教程/演示或文档,但到目前为止都失败了。 所以这里是我的问题:
如何实现这个“k_jwk”端点?我是否可以自己在“制作人”中简单地构建一个
@RestController?如何配置 Keycloak 以了解此 URL?如何实现我的“消费者”以从 Keycloak 获取新签名的 JWT?
更新 删除了恼人的 PS 声明。
【问题讨论】:
-
既然我们已经在 Spring Boot Adapter 中实现了,为什么还要重新实现所有这些?
-
请在这里告诉我如何使用 Keycloak 适配器。我找不到任何演示或文档。
-
我在您的博客或这些快速入门中找不到任何有关使用签名 JWT 的文档。
-
好吧,它没有记录,因为它是在内部完成的,如果你使用适配器,你不必关心这个,如果你想重新实现我们的适配器所做的检查 Keycloak 项目的源代码。
标签: spring-boot oauth-2.0 jwt java-web-start keycloak