如何使用公钥在本地验证Keycloak访问令牌

时间:2020-04-01 15:20:10

标签: java spring-boot kotlin jwt keycloak

我正在将Keycloak与Spring Boot和Kotlin一起使用,我正在使用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 个答案:

答案 0 :(得分:1)

作为配置的一部分,您可以创建一个org.springframework.security.oauth2.provider.token.store.JwtAccessTokenConverter Bean并通过其

传递公钥。

setVerifierKey(字符串键)

方法