validation节点PEM_read_bio_PUBKEY上的RS256 jwt失败

我试图我试图validation使用RS256algorithm的jwt 。 当使用hs256algorithm一切工作正常

 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 failed

虽然auth0有这样做的文档 ,它假定你使用快递,我不是。 我正在通过WebSocket这样做,所以没有中间件。

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

RS256需要一个公钥来validation,但是你提供了一个string

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

请参阅auth0的文档

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

token是JsonWebTokenstring

secretOrPublicKey是一个string或缓冲区,包含HMACalgorithm的密钥或RSA和ECDSA的PEM编码公钥。

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

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