我有一个节点应用程序,可从客户端的API检索JWT。我无权访问此API的代码库,但可以与进行此操作的人进行交流。该API用PHP编写,并使用firebase/php-jwt对JWT进行签名。 API维护人员确信我有正确的密钥来验证。
我使用jsonwebtoken模块来验证令牌,但是我得到了JsonWebTokenError: invalid signature
。它使用默认的HS256算法。我做了一个简单的php项目,尝试用firebase/php-jwt进行验证,并且我也得到了Uncaught Firebase\JWT\SignatureInvalidException: Signature verification failed
。
我想念什么吗?
节点代码:
JWT.verify(response.body, "****");
PHP代码:
JWT::decode($token, "****", array("HS256"));
我尝试过的事情:
Buffer.from("****", "base64")
作为键。ignoreExpiration
,ignoreNotBefore
)设置为true。答案 0 :(得分:0)
所以它固定了。客户端将密钥放在错误的环境文件中,导致JWT用空密钥签名。我确实尝试用空字符串作为键进行验证,但出现错误。奇怪的是,firebase模块允许它使用空键进行签名。
我确定这与密钥错误有关,但是客户确信这是正确的密钥。抱歉,没有意义的帖子。