How to use jti claim in a JWT

后端 未结 3 1904
夕颜
夕颜 2021-01-29 23:08

The JWT spec mentions a jti claim which allegedly can be used as a nonce to prevent replay attacks:

The "jti" (JWT ID) claim provides a unique iden

3条回答
  •  旧巷少年郎
    2021-01-29 23:50

    You can use express-jwt package

    See express-jwt on GitHub or on NPM.

    Express-jwt handles revoked tokens as described here: https://github.com/auth0/express-jwt#revoked-tokens

    var jwt = require('express-jwt');
    var data = require('./data');
    var utilities = require('./utilities');
    
    var isRevokedCallback = function(req, payload, done){
      var issuer = payload.iss;
      var tokenId = payload.jti;
    
      data.getRevokedToken(issuer, tokenId, function(err, token){
        if (err) { return done(err); }
        return done(null, !!token);
      });
    };
    
    app.get('/protected',
      jwt({secret: shhhhhhared-secret,
        isRevoked: isRevokedCallback}),
      function(req, res) {
        if (!req.user.admin) return res.send(401);
        res.send(200);
      });
    

    You can also read part 4. How do we avoid adding overhead? from this oauth0 blog post.

提交回复
热议问题