validation节点PEM_read_bio_PUBKEY上的RS256 jwt失败
我试图我试图validation使用RS256
algorithm的jwt
。 当使用hs256
algorithm一切工作正常
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');