当前位置: 首页 > 知识库问答 >
问题:

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

樊令秋
2023-03-14

后端服务器有一个endpoint,在ping时提供JSON响应,并受Apigee边缘代理的保护。目前,该endpoint没有安全性,我们希望为发出请求的所有客户端实现仅承载令牌身份验证。所有向API发出请求的客户端都将在授权承载中发送JWT令牌,Apigee Edge将用于验证JWT令牌。

我如何使用keydape生成这个JWT令牌?

此外,Apigee还需要一个JWT令牌来源的公钥(签署JWT令牌的服务器,在本例中,我认为这就是keyClope)。因此,我的第二个疑问是,当我使用keydape生成JWT令牌时,如何获取公钥,服务器将使用该公钥验证令牌是否有效?

共有1个答案

从开济
2023-03-14

这是在这篇媒体文章的帮助下弄明白的。我在下面提到的所有步骤在文章中都有详细的描述(令牌部分请参考步骤1到9,其他步骤与Spring Boot应用程序相关),但我想在我的问题中给出这些步骤的概述。

  1. 安装并运行KeyCloak服务器并转到endpoint(例如http://localhost:8080/auth)。使用初始管理员登录名和密码(用户名=admin,密码=admin)登录。
  2. 创建一个领域和一个客户端与openid连接作为客户端协议
  3. 创建用户、角色并将客户端角色映射到用户。
  4. 假设服务器处于localhost上,访问http://localhost:8080/auth/realms/dev/.well-known/openid-configuration会提供有关所有安全endpoint的详细信息
  5. http://localhost:8080/auth/realms/dev/protocol/openid-connect/token向这个URL发送一个包含有效详细信息的POST请求,就会得到JWTToken。
  • 转到领域设置并单击公钥,弹出该领域服务器的公钥。请参阅此图以便更好地理解
  • ----开始公钥----------结束公钥------添加到此复制的公钥,以便在任何地方使用它来验证JWTtoken。您的公钥最终应该如下所示:
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAhAj9OCZd0XjzOIad2VbUPSMoVK1X8hdD2Ad+jUXCzhZJf0RaN6B+79AW5jSgceAgyAtLXiBayLlaqSjZM6oyti9gc2M2BXzoDKLye+Tgpftd72Zreb4HpwKGpVrJ3H3Ip5DNLSD4a1ovAJ6Sahjb8z34T8c1OCnf5j70Y7i9t3y/j076XIUU4vWpAhI9LRAOkSLqDUE5L/ZdPmwTgK91Dy1fxUQ4d02Ly4MTwV2+4OaEHhIfDSvakLBeg4jLGOSxLY0y38DocYzMXe0exJXkLxqHKMznpgGrbps0TPfSK0c3q2PxQLczCD3n63HxbN8U9FPyGeMrz59PPpkwIDAQAB
-----END PUBLIC KEY-----
  • jwt。io是验证JWTToken的好网站。我们所要做的就是粘贴令牌和公钥。阅读此处的网站介绍,了解有关验证令牌的更多信息
 类似资料:
  • 我已经建立了一个keycloak服务器,我正在开发一个API,这将在互联网上。API将接收第三方(客户端)的调用。这些客户机将首先使用clientId和secret调用keycloak服务器以获取令牌,然后使用此令牌调用我的API。 null 我现在看到的是一个示例,它设置了一个JWTAuthHandler 来自我的API(用于JWTAuth)的调用的Keycloak配置是: 当我在postman

  • 我正在阅读JWT的示例文件夹,我有点不确定验证令牌的工作原理。 这里直接使用“mySigningKey”在中签名 现在,对我来说,未解析就不那么清楚了: 是为了验证客户端返回的令牌字符串的签名是否有效,您是否需要 解码声明(在&MyCustomClaims{}中完成) 使用token.valid验证解码声明的签名部分对“令牌中包含的pub密钥”是否有效。 但这个例子只是解码密钥,通过“魔术”返回的

  • 我试图测试我正在构建的一个关于JWT的软件的功能,以了解它,它使用Firebase JWT PHP包 我正在尝试创建一个使用密钥对作为编码/解码的测试用例,但无法获得http://jwt.io页面以使用我的密钥创建令牌。 这些是我使用命令创建的密钥,没有任何修改。 我转到页面,选择HS256/384/512并删除页面默认设置的键。然后我粘贴我的私钥以便对我的数据进行签名。但是,该页面不会生成任何J

  • 根据Azure Bot Service Authentication提供的信息,我尝试使用通过OpenID公开的公钥验证JWT令牌: https://login.botframework.com/v1/.well-known/OpenIDConfiguration https://login.microsoftonline.com/botframework.com/v2.0/.well-known

  • 我想为此endpoint创建JUnkt测试: 完整代码:Github JUnit测试: 当我运行代码时,我在这一行得到NPE: 我如何正确地模拟jwtTokenProvider?正如你所见,我有一个包含测试数据的文件,我加载了该文件,但没有提取令牌。你知道我如何解决这个问题吗?

  • 我目前正在使用Vapor开发Swift后端。我的iOS客户端使用新的iOS 13功能“使用Apple登录”。当用户登录时,我会得到一个身份令牌(访问令牌),这是一个由Apple签名的有效JWT令牌。这将在所有正在进行的通信中发送到服务器,以验证服务器提供的某些路由。 在服务器上,我想通过验证令牌签名来验证发送的令牌是否确实由Apple签名,并且不是由某些恶意用户专门创建的。Apple提供了一个HT