在Keycloak中生成JWT令牌,并获取公共密钥以在第三方平台上验证JWT令牌

时间:2019-02-26 11:52:35

标签: jwt keycloak apigee keycloak-services

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

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

此外,Apigee还需要一个 JWT令牌的起源的公有密钥(该服务器是对JWT令牌进行签名的服务器,在这种情况下,我认为是Keycloak) 。 因此,我的第二个疑问是,当我使用Keycloak生成JWT令牌时,如何获取服务器用来验证令牌是否有效的公共密钥?

1 个答案:

答案 0 :(得分:1)

我终于可以从this medium article找到该问题的答案。我在下面提到的所有步骤在文章中都有详细的描述(有关令牌部分,请参阅步骤1至9,其他步骤与Spring Boot应用程序有关),但是我想概述一下这些问题。< / p>

使用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。

获取KeyCloak服务器的公钥

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

在第三方平台上验证令牌

  • jwt.io是用于验证JWTtokens的绝佳网站。我要做的就是粘贴令牌和公钥。阅读网站here的介绍,以了解有关验证令牌的更多信息。