validation由Laravel中的Node生成的JWT

我在我们的身份validation服务器(Node.js) node_jsonwebtoken中生成一个令牌,该令牌将被传递给API(PHP Laravel),并通过tymondesigns / jwt-auth进行validation 。

  • 由tymondesigns / jwt-auth生成的令牌将通过自己的validationfunctionnode-jsonwebtoken和jwt.io进行validation 。
  • 由node-jsonwebtoken生成的令牌将通过自己的validation函数jwt.io成功validation, 但不会被tymondesigns / jwt-authvalidation

在Laravel服务器上,当我尝试validation由node-jsonwebtoken生成的令牌时,出现以下错误:

TokenInvalidException in NamshiAdapter.php line 71: Token Signature could not be verified. 

当我在jwt.io上查看它们时,有效载荷看起来是一样的。 我甚至试图通过传递与工作令牌相同的iat,sub,iss,exp,nbf和jti来在Node服务器上生成完全相同的令牌,但是tymondesigns / jwt-auth仍然不会接受它。

还有什么可能导致这一点,但在解码的信息不可见? 我也不是100%确定jti是如何工作的。 也许有什么阻止这个工作呢?

node-jsonwebtoken(7.1.9),tymon / jwt-auth(0.5.9),namshi / jose(5.0.2)

namshi/jose库的最后版本是7.0。 所有ESxxxalgorithm也有一个已知的错误。

如果您无法使用该库validation签名,则可以尝试使用另一个签名。 我开发了一个库 ,支持与JWT相关的RFC中描述的所有function,包括encryption支持。

原因是,正如Spomky所提到的, namshi / jose中的一个bug涉及到iss声明。 它在7.0中被tymon / jwt-auth 1.0.0-alpha.2 。 但是,由于目前还没有文档方式来安装1.0.0-alpha.2,我们可能不得不等待一个稳定版本。

在此之前,由于问题和错误与iss索赔相关,从required_claims删除iss要求并在没有它的情况下生成令牌可以暂时解决问题。