节点 js JWT 令牌不是使用 RS256 算法生成的

Posted

技术标签:

【中文标题】节点 js JWT 令牌不是使用 RS256 算法生成的【英文标题】:Node js JWT token not generated with RS256 algorithm 【发布时间】:2019-10-08 18:00:35 【问题描述】:

我使用 JWT 来保护我的 node.js REST api 调用。 我使用以下代码生成令牌:

jwt.sign( foo: 'bar' , private_key,  algorithm: 'RS256', (err, token) => 
      res.json(
        token
      );

但是当我使用算法时我没有得到任何令牌:'RS256'。但上面的代码适用于算法:'HS256'。

你知道解决办法吗?

【问题讨论】:

您没有显示私钥实际上是什么。你有任何错误吗?请点击编辑完成上面的代码,并为您的问题添加更多信息。 您使用什么 npm 包来尝试生成 JWT?另外请将console.log(err, token); 添加到您的代码中并报告结果。 如果你只是把不完整的问题扔掉然后不再反应,那就太浪费时间了 【参考方案1】:

试试这个:

jwt.sign( foo: 'bar' , private_key, [ algorithm: 'RS256', (err, token) => 
  res.json(
    token
  ]);

在 npm 文档中出现这个 jwt.sign(payload, secretOrPrivateKey, [options, callback]) 所以像数组一样传递你的选项和回调。希望对您有所帮助

【讨论】:

[options, callback] 表示可选

以上是关于节点 js JWT 令牌不是使用 RS256 算法生成的的主要内容,如果未能解决你的问题,请参考以下文章

在 Knock (rails) 中验证用 RS256 签名的 JWT 令牌

更改 AWS Cognito 访问令牌 JWT 中的加密算法

django rest框架使用jwt RS256解码签名错误

Node.js 中未使用 RS256 算法生成 jsonwebtoken 令牌

ruby-jwt编码,用RS256算法解码

.NET:RS256 签名的 JWT 中的签名无效