JWT 解码失败,exp 值无效

Posted

技术标签:

【中文标题】JWT 解码失败,exp 值无效【英文标题】:JWT decode fails with invalid exp value 【发布时间】:2019-08-15 05:02:58 【问题描述】:

我在 nodejs 10.2.0 应用程序中使用模块 jsonwebtoken 8.4.0。在https://jwt.io 上生成一个 JWT 令牌用于测试目的:

payload 中,exp 是到期日期,字符串在 JSON 中的格式正确。然后将左侧的 JWT 令牌提交到应用程序进行验证。这是失败的代码行(如下面的 29:33):

const decoded = jwt.verify(jwt_token, process.env.jwtPrivateKey);

错误是:

 JsonWebTokenError: invalid exp value
    at C:\d\code\js\emps_bbone\node_modules\jsonwebtoken\verify.js:149:21
    at getSecret (C:\d\code\js\emps_bbone\node_modules\jsonwebtoken\verify.js:90:14)
    at Object.module.exports [as verify] (C:\d\code\js\emps_bbone\node_modules\jsonwebtoken\verify.js:94:10)
    at module.exports (C:\d\code\js\emps_bbone\middleware\auth_userinfo.js:29:33)

错误是抱怨无效的exp 值。显然,有效载荷生成了一个有效的 jwt 令牌。 jsonwebtoken decode 只需要返回原来的payload exp,这是一个字符串,为什么会失败?

【问题讨论】:

【参考方案1】:

您需要提供exp 作为NumericDate。显然您不能使用您提供的日期格式。

查看文档:https://www.npmjs.com/package/jsonwebtoken#token-expiration-exp-claim

见规范:https://www.rfc-editor.org/rfc/rfc7519#section-4.1.4

【讨论】:

以上是关于JWT 解码失败,exp 值无效的主要内容,如果未能解决你的问题,请参考以下文章

从 Google 解码 JWT 字符串失败 [php]

Envoy 验证 Jwt 失败

解码 jwt 时,AuthenticationEvent 未发布错误

JWT 验证失败

JWT 验证失败

令牌身份验证失败:“utf-8”编解码器无法解码位置 0 中的字节 0xe4:无效的继续字节