后端服务器有一个端点,该端点在ping时给出JSON响应,并受 Apigee Edge Proxy 保护。当前,该端点没有安全性,我们希望为所有发出请求的客户端实施仅承载令牌认证。 向API发出请求的所有客户端都将在 Authorization Bearer 中发送该JWT令牌,并且Apigee Edge将用于验证JWT令牌。
如何使用Keycloak生成此JWT令牌?
此外,Apigee还需要一个 JWT令牌的起源的公有密钥(该服务器是对JWT令牌进行签名的服务器,在这种情况下,我认为是Keycloak) 。 因此,我的第二个疑问是,当我使用Keycloak生成JWT令牌时,如何获取服务器用来验证令牌是否有效的公共密钥?
答案 0 :(得分:1)
我终于可以从this medium article找到该问题的答案。我在下面提到的所有步骤在文章中都有详细的描述(有关令牌部分,请参阅步骤1至9,其他步骤与Spring Boot应用程序有关),但是我想概述一下这些问题。< / p>
openid-connect
作为Client Protocol
创建一个领域和一个客户端。localhost
上,访问http://localhost:8080/auth/realms/dev/.well-known/openid-configuration会提供有关所有安全端点的详细信息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-----