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

JWT/KONG:无法创建具有共享机密的JWT

慕承恩
2023-03-14

我最近在玩KONG API gateway。

我想在每个JWT上签名,并在所有micros中共享一个秘密。我之所以需要这个,是因为我希望其他micros能够解码给定的JWT,提取有效负载数据并处理它(例如有效负载中的\u user\u id\u字段)。

当我尝试为第一个消费者创建JWT时,它工作得很好。但是当我尝试为第二个消费者创建它时,我得到了以下错误:

<代码>{u'secret:u”已存在,值为“secret”}

我不太确定,但我认为KONG/JWT需要为每个消费者提供唯一的秘密才能创建JWT。是否有可能正确配置JWT插件,以便能够使用共享密钥对JWTs进行签名?

附言:我不完全确定使用共享秘密是否是一种好的做法。如果有更好的方法,请告诉我。谢谢

  • Kong版本<代码>v0.10.2

共有1个答案

慕容博涛
2023-03-14

您可以使用私有公钥签名方法
使用私钥创建JWT令牌,并与所有其他微服务共享公钥。其他微服务可以使用共享公钥验证令牌的签名。

您可以使用RSA算法生成密钥

用于生成密钥的片段:

    KeyPairGenerator kpg = KeyPairGenerator.getInstance("RSA");
    kpg.initialize(2048);
    KeyPair kp = kpg.genKeyPair();
    Key publicKey = kp.getPublic();
    Key privateKey = kp.getPrivate(); 

生成JWT令牌的代码段。我正在使用JJwt API生成令牌:

Jwts.builder()
            .setClaims(payload)
            .setExpiration(expiryDate)
            .signWith(SignatureAlgorithm.RS256, privateKey )
            .compact();

使用公钥验证令牌的代码段:

Jwts.parser() 
       .setSigningKey(publicKey )
       .parseClaimsJws(jwtToken)

希望这有帮助。

 类似资料:
  • 问题内容: 即使对于基于文件的存储,也不希望其他人打开进程中的HSQLDB数据库。 该文档提示这是可能的:服务器模式,高级主题,但是我还没有找到有关如何激活此行为的URL。 有没有人这样做,以便他们可以共享方法? 问题答案: 以下对我有用: 从您的代码启动服务器,该代码显示在HSQLDB源代码的org.hsqldb.test.TestBase代码中。就像是: 在同一个JVM中,以与普通(非服务器)

  • 当我运行下面的代码时,它取自:https://developers.google.com/drive/api/v3/manage-shareddrives#python 我得到“用户对此文件没有足够的权限”如果我创建文件、列出共享驱动器或其他任何东西,都不会发生这种情况。除了['https://www.googleapis.com/auth/drive']. 需要注意的是,我使用的是服务号。服务帐

  • 问题内容: 我们的软件当前在MySQL上运行。所有租户的数据都存储在同一架构中。由于我们使用的是Ruby on Rails,因此我们可以轻松确定哪些数据属于哪个租户。但是,当然有些公司担心其数据可能会遭到破坏,因此我们正在评估其他解决方案。 到目前为止,我已经看到了三种选择: 多数据库(每个租户都有自己的-每个客户几乎与1台服务器相同) 多模式(在MySQL中不可用,每个租户都在共享数据库中获得自

  • 在 swift 中,我是否可以创建共享类?也就是说,假设有一个名为 Value 的类: 我想使用这个类在不同的对象实例之间共享。举个例子, 我尝试了在var a上静态,但后来它不会让我做诸如加法之类的算术......但是,如果我将值更改为静态而不是类,它正在起作用。我认为结构和类之间唯一的区别是变量类型或引用类型... 我会感激任何帮助。谢谢

  • PHP 非常流行,很少有服务器没有安装 PHP 的,因而有很多共享主机,不过需要注意服务器上的 PHP 是否是最新 版本。共享主机允许多个开发者把自己的网站部署在同一台服务器上面,这样的好处是费用非常便宜,坏处是你不知道将和哪些 网站共享主机,因此需要仔细考虑机器负载和安全问题。如果项目预算允许的话,避免使用共享主机是上策。

  • 我正在寻找使用“Nimbus JOSE JWT”库开发具有RSA加密的JWT应用程序。我正在寻找示例代码。 我想使用以下Maven依赖项: 注意:请始终使用Maven Central repository的最新版本。