如何使用公钥在本地验证 keycloak 访问令牌
Posted
技术标签:
【中文标题】如何使用公钥在本地验证 keycloak 访问令牌【英文标题】:how to locally validate keycloak access tokens using the public key 【发布时间】:2020-07-13 09:48:40 【问题描述】:我正在使用带有 Spring Boot 和 Kotlin 的 Keycloak,我正在使用看起来像这样的 keycloak.json 的最低设置。并带有注释 @PreAuthorize("isAuthenticated()") 来保护我的端点。 钥匙斗篷设置是 客户端身份验证器 = 客户端 ID 和密码 启用标准流程。
"realm": "dev",
"realm-public-key" : " public key here ",
"auth-server-url": "http://localhost:8085/auth/",
"ssl-required": "external",
"resource": "test_service",
"verify-token-audience": true,
"credentials":
"secret": " secrete here"
,
"use-resource-role-mappings": true,
"confidential-port": 0
我在文档部分“2.6.2.验证访问令牌”中仅使用“Keycloak-spring-security-adapter”,它说我可以使用 JWT 使用公钥在本地验证访问令牌,但不能在 java 或 Kotlin 中找不到示例,目前通过将其发送到 Keycloak 服务器来完成验证,据我所知,我怎样才能阻止它这样做并在本地(离线)验证令牌而不使用公共联系服务器关键,如果您能指出我正确的方向,或者您知道示例或博客,那将非常有帮助。
【问题讨论】:
【参考方案1】:作为配置的一部分,您可以创建一个org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter Bean 并通过其传递公钥
setVerifierKey(字符串键)
方法
【讨论】:
以上是关于如何使用公钥在本地验证 keycloak 访问令牌的主要内容,如果未能解决你的问题,请参考以下文章
如何验证从反应 SPA 中的 keycloak 检索的 nodejs express api 的访问令牌?
如何使用 jwt 公钥在 Spring Boot 中验证承载访问令牌
如何验证在 jwt.io 上使用 Keycloak 身份验证提供程序创建的 HS256 签名 JWT 令牌
在 Keycloak SPI/Provider 中获取当前用户访问令牌(初始登录时)