Jose4j验证签名alg RS256与加密算法

时间:2017-10-24 20:08:24

标签: jose4j

JWT使用RS256签名,我使用jose4j来验证JWT签名。在我无权访问的用户环境之一中,它会生成此意外异常:

  

org.jose4j.lang.InvalidAlgorithmException:RS256是未知的,   不支持或不可用的alg算法(不是[RSA1_5,   RSA-OAEP,RSA-OAEP-256,dir,A128KW,A192KW,A256KW,ECDH-ES,   ECDH-ES + A128KW,ECDH-ES + A192KW,ECDH-ES + A256KW,PBES2-HS256 + A128KW,   PBES2-HS384 + A192KW,PBES2-HS512 + A256KW,A128GCMKW,A192GCMKW,   A256GCMKW])

看起来签名算法针对密钥加密算法进行了错误验证。请注意,我的代码仅进行签名验证,并且没有任何解密/加密逻辑。这只发生在一个用户环境中,我无法在本地访问或重新创建它。

有没有人见过这样的问题?或者可以给我一个调试它的提示?

2 个答案:

答案 0 :(得分:1)

JwtConsumer查看它正在处理的JWT字符串,并尝试根据格式确定它是JWS还是JWE。 JWS有三个段,由两个句点(&#39;。&#39;)字符分隔,如<header>.<payload>.<signature>,而JWE有五个段,由四个句点(&#39;。&#39;)字符分隔,如{{ 1}}。

看起来你似乎得到了一个格式错误的JWT,它有一个JWS标题,但有五个编码的段由四个句点字符分隔。 <header>.<encrypted-key>.<IV>.<ciphertext>.<authentication-tag>将首先看到具有四个点的结构,并尝试将其作为JWE处理。然后当它看到非JWE alg头值时失败。我不知道JWT可能会如何变形,但这几乎肯定是错误信息的意思。

答案 1 :(得分:0)

我有此错误,因为我的JDK中没有JCE(Java密码学扩展)。 (我想,由于同样的问题,很多人都可以用谷歌搜索这个问题)。 Here,您可以找到如何在MacOS上安装它。