为什么会出现“ JsonWebTokenError:无效签名”错误

时间:2020-04-02 07:42:05

标签: php node.js jwt

我有一个节点应用程序,可从客户端的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"));

我尝试过的事情:

  • 我了解到有时需要base64字符串,因此我尝试使用Buffer.from("****", "base64")作为键。
  • 即使它使用默认算法,我也尝试设置算法。
  • 我尝试将所有忽略选项(例如ignoreExpirationignoreNotBefore)设置为true。
  • 我已经与签署令牌的人检查了密码,他说这是正确的密码。
  • 调试了node_module脚本以检查是否一切正确。

1 个答案:

答案 0 :(得分:0)

所以它固定了。客户端将密钥放在错误的环境文件中,导致JWT用空密钥签名。我确实尝试用空字符串作为键进行验证,但出现错误。奇怪的是,firebase模块允许它使用空键进行签名。

我确定这与密钥错误有关,但是客户确信这是正确的密钥。抱歉,没有意义的帖子。

相关问题