jwt - JWT 令牌加密
问题描述
我正在寻找加密我的 JWT 令牌。我浏览了 quarkus 文档和 JWT 的各种属性。但是我无法弄清楚出了什么问题。带有简单签名位的基本东西可以正常工作,
Jwt.claims(jsonObject).sign();
在这里我设置了2个属性,
mp.jwt.verify.publickey.location=publicKey.pem
smallrye.jwt.sign.key.location=privateKey.pem
对于加密位,根据文档,我设置了 2 个附加属性,
mp.jwt.decrypt.key.location=privateKey.pem
smallrye.jwt.encrypt.key.location=publicKey.pem
正在使用的代码是,
Jwt.innerSignAndEncrypt(jsonObject);
当我打开验证跟踪时,我在日志中收到以下异常,
Caused by: org.jose4j.lang.InvalidKeyException: The key must not be null.
at org.jose4j.jwx.KeyValidationSupport.notNull(KeyValidationSupport.java:72)
at org.jose4j.jwx.KeyValidationSupport.castKey(KeyValidationSupport.java:56)
at org.jose4j.jwe.RsaKeyManagementAlgorithm.validateDecryptionKey(RsaKeyManagementAlgorithm.java:57)
at org.jose4j.jwe.JsonWebEncryption.createDecryptingPrimitive(JsonWebEncryption.java:225)
at org.jose4j.jwe.JsonWebEncryption.decrypt(JsonWebEncryption.java:240)
at org.jose4j.jwe.JsonWebEncryption.getPlaintextBytes(JsonWebEncryption.java:85)
at org.jose4j.jwe.JsonWebEncryption.getPlaintextString(JsonWebEncryption.java:78)
at org.jose4j.jwe.JsonWebEncryption.getPayload(JsonWebEncryption.java:93)
at org.jose4j.jwt.consumer.JwtConsumer.process(JwtConsumer.java:366)
不确定需要设置什么键。
注意:为了测试,我使用相同的 RSA 密钥对进行签名和加密。
任何帮助是极大的赞赏。
TIA
解决方案
我也在 Quarkus 聊天中发布了这个。在为他们创建复制器应用程序时,我使用了最新的 Quarkus 版本 2.1.3。在那里我遇到了一个不同的异常,
Caused by: org.jose4j.lang.InvalidAlgorithmException: 'RSA-OAEP-256' is not a permitted algorithm.
at org.jose4j.jwa.AlgorithmConstraints.checkConstraint(AlgorithmConstraints.java:80)
在进一步调查这一点时,这似乎是 smallrye 中的一个问题,即使记录的默认算法是“RSA-OAEP”,它也试图默认为“RSA-OAEP-256”。解决方案是将属性(smallrye.jwt.decrypt.algorithm)显式设置为“RSA-OAEP-256”,同时添加一个fix。
推荐阅读
- python - 在 ctor 中写入数据成员是否更 Pythonic?
- python - 使用 QML Pyside2 创建 Blender 插件
- sql - 如何从数据库中的每个表中读取相同的列?
- python - 如何从给定的过滤器集中在熊猫中正确应用过滤器?
- laravel - 如何为 PackageItem 表创建 CRUD 并通过 foreignKey 在另一个表中获取项目?在拉拉维尔
- javascript - 材质 UI 选择未正确显示标签
- python - 检查 Web 应用程序的拖放功能
- javascript - 如果在 JavaScript 中找不到任何内容,则返回 Firestore 查询
- google-cloud-platform - Google Cloud Platform:通过 Cloud Storage 事件触发 Cloud Build
- javascript - 类:与对象与函数没有本质关系的方法