是否通过jwt.verify函数验证了整个JWT?

时间:2018-06-28 09:20:12

标签: jwt auth0

我正在使用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算法将验证整个令牌吗?还是我需要指定

0 个答案:

没有答案