2017-05-15 2 views
0

Ich entwickle eine Angular Web App, die über RESTful API mit ihrem Backend kommuniziert. Derzeit verwende ich JWTs, um den Status (aktuelle Benutzer-ID usw.) zu speichern. Ich verwende jsonwebtoken und pass-jwt-Pakete, um den JWT mit meiner Node.js-Express-Anwendung zu implementieren.Speichern geheimer Informationen in JWT mit Node.js - Express Backend

Manchmal muss ich möglicherweise einige Informationen (z. B. einen geheimen Verschlüsselungsschlüssel) speichern, die für die Sitzung relevant sind, die dem Benutzer jedoch nicht bekannt sein sollten.

Da die JWT-Nutzlast signiert, aber nicht verschlüsselt ist, ist ihr Inhalt für jeden sichtbar, der sie entschlüsseln möchte. Es ist nicht angemessen, geheimen Inhalt direkt in der Nutzlast zu speichern. Während ich eine selbstgemachte Verschlüsselung der gesamten JWT-Zeichenkette oder nur den Wert der geheimen Variablen in der Nutzlast implementieren könnte, suche ich nach der "richtigen" oder "traditionellen" Methode, um damit umzugehen.

Antwort

0

Der beste Weg wäre, es nur auf dem Back-End in einer Art von persistenten Speicher bevorzugt Hash zu speichern.

Wenn das nicht möglich ist, können Sie im JWT speichern, aber Sie müssen die Daten verschlüsseln, bevor Sie sie dort einfügen.

Bcrypt ist wahrscheinlich die einfachste Lösung, die immer noch sicher ist https://www.npmjs.com/package/bcryptjs. Beachten Sie, dass die Verschlüsselung umso langsamer wird, je sicherer Sie es wünschen.

+0

Ist bcrypt nicht nur als Hash-Methode, sondern als Verschlüsselungsmethode nützlich? Es scheint, als ob OP eine andere Lösung benötigt. Ich wundere mich über den Teil "sollte nicht bekannt sein" - besteht eine Gefahr, wenn der Benutzer diese Informationen findet? –

+0

Das spezielle Beispiel ist die 2-Faktor-Authentifizierung, bei der die Codes auf einem geheimen Seed basieren, der auf der Serverseite generiert und über andere Medien (z. B. SMS-Nachricht) an den Benutzer weitergegeben wird. Dieser Teil der Daten muss im Zustand erhalten bleiben, sollte jedoch in der API-Kommunikation nicht beobachtet werden können. – Passiday

Verwandte Themen