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 failed
有documentation这样做,但它假设您使用的是快递,我不是。我在websocket上这样做,所以没有中间件。
令人讨厌的一点是,auth0
对我来说很好,但auth0自定义登录表单似乎需要HS256
。
答案 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');