验证节点PEM_read_bio_PUBKEY上的RS256 jwt是否失败

时间:2017-03-20 19:53:02

标签: node.js jwt auth0 json-web-token

我试图这样做 我尝试验证使用T.ToDictionary(t => t.Item1, t => Tuple.Create(t.Item2, t.Item3)) 算法的jwt。使用RS256算法时一切正常

hs256

我一直收到错误:let opts = { audience: 'y', issuer: `https://x.auth0.com/`, algorithms: ["RS256"] } jwt.verify(payload.token, 'secret', opts, (err, decoded) => { if (err) { console.log("invalid token in iamonline service " + err.message); return; }

虽然PEM_read_bio_PUBKEY faileddocumentation这样做,但它假设您使用的是快递,我不是。我在websocket上这样做,所以没有中间件。

令人讨厌的一点是,auth0对我来说很好,但auth0自定义登录表单似乎需要HS256

1 个答案:

答案 0 :(得分:8)

RS256需要公钥才能验证,但您提供了一个字符串

jwt.verify(payload.token, 'secret', opts, (err, decoded) => {

请参阅auth0的文档

  

jwt.verify(token,secretOrPublicKey,[options,callback])

     

token是JsonWebToken字符串

     

secretOrPublicKey是一个字符串或缓冲区,包含HMAC算法的秘密或RSA和ECDSA的PEM编码公钥。

您需要提供PEM公钥而不是secret。 PEM文件内容将以-----BEGIN PUBLIC KEY-----

开头
var publicKey = fs.readFileSync('public.pem');