JWT 令牌加密
JWT Token Encryption
我想加密我的 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.
我想加密我的 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.