在Keycloak中生成JWT Token并获取public key在第三方平台验证JWT token

Generate JWT Token in Keycloak and get public key to verify the JWT token on a third party platform

后端服务器有一个端点,它在 ping 时给出 JSON 响应,并受 Apigee Edge Proxy 保护。目前,此端点没有安全性,我们希望为所有发出请求的客户端实施仅持有者令牌身份验证。 向 API 发出请求的所有客户端都将在 Authorization Bearer 中发送该 JWT 令牌,Apigee Edge 将用于验证 JWT 令牌。

如何使用 Keycloak 生成此 JWT 令牌?

此外,Apigee 需要 JWT 令牌来源public 密钥(签署 JWT 的服务器令牌,在这种情况下,我相信那是 Keycloak)。 所以我的第二个疑问是,当我使用 Keycloak 生成 JWT 令牌时,如何获取服务器用来验证令牌是否有效的 public 密钥?

这是在 this medium article 的帮助下解决的。我在下面提到的所有步骤在文章中都有详细说明(令牌部分参考步骤 1 到 9,其他步骤与 Spring 启动应用程序相关)但我想对这些步骤进行概述参考我的问题。

使用 KeyCloak 生成 JWT 令牌

  1. 安装和运行 KeyCloak 服务器并转到端点(例如http://localhost:8080/auth)。使用初始管理员登录名和密码登录(用户名=admin,密码=admin)。
  2. 使用 openid-connect 作为 Client Protocol 创建一个领域和一个客户端。
  3. 创建用户、角色并将客户端角色映射到用户。
  4. 假设服务器在 localhost 上,访问 http://localhost:8080/auth/realms/dev/.well-known/openid-configuration 会提供有关所有安全端点的详细信息
  5. http://localhost:8080/auth/realms/dev/protocol/openid-connect/token 向此 URL 发送一个包含有效详细信息的 POST 请求给 JWTtoken with.

获取KeyCloak服务器的public密钥

  • 转到 Realm Settings 并单击 Public key 会弹出该领域服务器的 Public 键。请参阅 this image 以获得更好的理解。
  • 添加 -----BEGIN PUBLIC KEY----- 并将 -----END PUBLIC KEY----- 附加到此复制的 public 密钥以在任何地方使用它来验证 JWTtoken。您 public 密钥最终应该看起来像这样:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUE5L/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----

在第三方平台上验证令牌

  • jwt.io 是一个用于验证 JWTtokens 的好网站。全部 我们要做的就是粘贴令牌和 public 密钥。阅读网站介绍 here 了解更多关于验证令牌的信息。