我在使用部署到 kubernetes 集群的 keycloak-nodejs-connect 库验证令牌时遇到问题 - 特别是在使用内部 kubernete 的 keycloak 服务地址作为 auth-server-url 时。我正在使用 keycloak 版本 10.0.1。
我们的工作流程如下 - 我们的 Web 应用程序使用公共 keycloak 客户端进行身份验证以获取访问令牌。此令牌附加到对数据库的数据请求。db (hasura) 在允许访问其数据之前使用 auth hook 来验证令牌。这个身份验证钩子实现了 keycloak-nodejs-connect 库,并通过提供的中间件调用 grantManager 的validateToken
. 但是,当使用 kubernete 的服务地址 (http://keycloak:8080/auth/) 配置连接库时,保证在颁发者匹配时出错,因为 JWT 令牌 ( iss
) 中的颁发者属性将是在密钥斗篷服务器(https://keycloak.public.address.uk/auth/)。
有没有办法为 keycloak-nodejs-connect 库提供前端和后端 url,以便在使用后端 url 通过 kubernete 的服务与 keycloak 对话时可以进行颁发者验证 - 或者我应该以某种方式配置 keycloak 所以发行人不同?我特别需要在这里使用 kubernete 的服务地址而不是公共地址来进行集群中的 keycloak 通信。
以下源位置超链接尝试在代码中突出显示问题:
- nodejs 连接服务器 url 配置(注意只有一个 url 可用于 keycloak 服务器通信和颁发者验证)
- 应用配置的位置
- 根据配置的 keycloak 身份验证服务器验证令牌颁发者的位置
- Keycloak 服务器的前端 url
- 生成令牌时如何将颁发者设置为前端 url 的一个示例
非常感谢您的帮助,安迪。