我正在使用Auth0的node-jsonwebtoken模块来验证JWT:https://github.com/auth0/node-jsonwebtoken
如果令牌已验证,那么我想将令牌中的某些字段添加到下一个中间件的响应中。
如果没有令牌或令牌已过期,那么我想按原样传递响应而不更改它。
我的pemCert是https://MYDOMAIN.auth0.com/.well-known/jwks.json中的x5c字段
jwt.verify(
tokenCrop,
pemCert,
{ algorithm: 'RS256' },
(err, decodedToken) => {
if (err) {
console.error('err ', err);
// If the token isn't verified eg expired then forward as if no token
next();
} else if (decodedToken) {
// If the token is verified then add fields to the res
const authId = decodedToken.sub;
const email = decodedToken.email;
const name = () => {
if (authId.startsWith('twitter')) {
return decodedToken.name;
} else if (authId.startsWith('facebook')) {
return decodedToken.given_name;
} else {
return '';
}
};
req.jwtInfo = {
authId,
email,
name: name(),
};
next();
}
},
);
代码似乎可以正常运行,但是我没有使用无效的令牌进行测试,而Im对jwt.verify
的工作方式感到困惑。从文档看来,它可能需要很多选择。
正如我所指定的,RS256算法将验证整个令牌吗?还是我需要指定