2016-12-22 1 views
1

JWT fehlt Ich bin mit Express-jwt Middleware zu schaffen, jwtCheckMiddleware:Express-jwt: ablehnen schnell wesentliche Eigenschaft

function getTokenFromRequest(req) { 
... 
throw Boom.badRequest("JWT missing") 
} 

async function isNotRevokedCallback(req, payload, done) { 
... 
} 

const jwtCheckMiddleware = expressJwt({ 
    secret: ...., 
    credentialsRequired: true, 
    isRevoked: isNotRevokedCallback, 
    getToken: getTokenFromRequest 
}) 

An einem Punkt in der Entwicklung gaben die JWTs fehlte eine JTI Eigenschaft. Neu ausgestellte Tokens enthalten die JTI-Eigenschaft.

Eine Anfrage ohne JWT wird schnell abgelehnt; getTokenFromRequest gibt einen Fehler aus. Das funktioniert großartig.

Eine Anfrage mit einer alten JWT - ohne JTI - nur mal aus.

Es gibt einen Null-Check innerhalb isNotRevokedCallback auf der JTI; Ich erhalte einen Fehler, wenn die JTI nicht definiert ist. Könnte es sein, dass der expressJwt Middleware-Konstruktor diesen Fehler nicht richtig abfängt, was zu einem Timeout führt?

isNotRevokedCallback basiert lose auf https://github.com/auth0/express-jwt#revoked-tokens

Antwort

2

Nach der Dokumentation der isRevoked Callback-Funktion eine Signatur von function(req, payload, done) haben sollte. Das als done übergebene Argument ist wiederum eine Funktion mit einer Signatur function(err, revoked), die aufgerufen werden sollte, sobald die Prüfung überprüft hat, ob das Token widerrufen wurde oder nicht.

Wenn die JWT in Frage keinen jti Anspruch, und Sie müssen dann einen Fehler auslösen Sie done(new YourError()) Aufruf werden sollte, dass ein Fehler aufgetreten zu signalisieren.

Sie haben Ihre tatsächliche Implementierung nicht angegeben, so dass es unmöglich ist, mit Sicherheit zu sagen, dass dies die Ursache ist, aber es scheint ein guter Kandidat zu sein.

+0

Danke! Der "beendete" Rückruf war der kritische Punkt. Der Erfolgsfall ist 'done (null, false)' und der Fehlerfall ist 'done (Boom.wrap (err))' 'für einen Fehler, der in' isNotRevokedCallback' abgefangen wurde. –