如何使用公钥在本地验证 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 中获取当前用户访问令牌(初始登录时)

Keycloak:使用 keycloak-admin 为用户生成访问令牌

Keycloak 访问令牌与 UserInfo 令牌?