2016-03-31 11 views
0

Ich verwende Node.js, MySQL und JSON Web Token, um eine API zu erstellen.JSON Web Token (JWT) Sicherheit

Mein JWT sieht wie folgt aus:

eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJyb2xlcyI6WyJsb2dnZWRfaW4iLCJhZG1pbiJdLCJpZCI6NzEsImlhdCI6MTQ1OTQ0NjU5MCwiZXhwIjoxNDU5NTMyOTkwfQ.BBbdyFMztYkXlhcBjW6D5SsKxtaRiZJqiNShOroQmhk 

und seine Ansprüche dekodieren:

{"roles":["logged_in","admin"],"id":71,"iat":1459446590,"exp":1459532990} 

Wenn ein api Endpunkt erhält, dass JWT, ist es sicherer, mit der ID der Benutzertabelle aufrufen 71 irgendwelche relevanten Details erhalten oder die ID vom JWT verwenden?

Im Idealfall würden wir viele Anrufe in der Benutzertabelle speichern, aber gibt es eine Sicherheitsbedrohung? Kann ein böswilliger Benutzer diese ID oder eine Rolle vor dem Aufrufen des Endpunkts nicht ändern?

Antwort

3

JWT ist signiert. Wenn ein Benutzer etwas an der Payload ändert, schlägt die Signaturvalidierung fehl und Sie werden wissen, dass die Daten manipuliert wurden.

Das heißt, die Daten selbst ist nicht verschlüsselt. Sie können eine Benutzer-ID verwenden, aber keine vertraulichen Informationen hinzufügen, die nicht öffentlich sein könnten.

Mehr über JWT Überprüfung und Lifecycle:

https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

+0

Perfect. Vielen Dank! – user1683056