2017-11-01 4 views
1

Ich möchte JWT in meiner Anwendung verwenden. Jetzt frage ich mich, ob es sicher ist, das Benutzerpasswort in Kombination mit einem privaten Geheimnis als Schlüssel zu verwenden, um meine Token zu signieren. Auf diese Weise werden Token ungültig, wenn ein Benutzer sein Passwort ändert. Aber vielleicht macht es mein privates Geheimnis anfällig? Danke für Ihre Gedanken dazu!JWT mit Benutzerpasswort in Schlüssel

+0

Ich schätze, es macht es ein bisschen schwierig zu validieren, da ich den Benutzer vor der Hand laden müsste. Aber das sollte machbar sein. –

Antwort

1

ist es üblich, alle Token mit demselben Schlüssel zu signieren. Vereinfacht das Management und vermeidet die Abfrage der Datenbank in jeder Anfrage.

Anmeldung mit einem Schlüssel + Benutzerpasswort ist machbar und hat den Vorteil, Token (mit den kommentierten Nachteilen) widerrufen zu können.

Stellen Sie sicher, dass Ihr Signaturschlüssel ausreicht, um ihn vom Benutzerkennwort abzuleiten, und dass er die empfohlene Länge des ausgewählten Signaturalgorithmus hat. Speichern oder verwenden Sie das Benutzerpasswort nicht direkt.

+0

danke für deine antwort. unter der Annahme, dass ich die meiste Zeit gültige Anfragen erhalte, werde ich am Ende die Datenbank für den Benutzer abfragen. also denke ich, es ist eigentlich nicht so ein Nachteil? –

+0

Die Auswirkung hängt von Ihrer Architektur ab. Wenn Sie schwere Dienste mit Dutzenden von Abfragen implementieren, spielt eine zusätzliche Rolle keine Rolle. Wenn Sie jedoch Microservices verwenden, kann sich dies auf die Antwortzeit auswirken. Beachten Sie auch, dass das Ändern des Kennworts wahrscheinlich keine allgemeine Anforderung ist, aber Sie bestrafen alle Dienste, um diese Operation zu unterstützen. – pedrofb

0

Das Geheimnis ist eine Preshared-Zeichenfolge, die zwischen dem Client und dem Server ausgetauscht wird. Also in Ihrem Fall:

  SecretString= PresharedSecret + ClientPassword 

Also, jedes Mal übergibt der Client ein JWT Token, das Passwort aus der Datenbank abgerufen werden müßte oder eine Art, es Vorbelastung und eine Überprüfung bei Kennwortänderungen haben für die Validierung das Token.

Dies zu den folgenden Szenarien führen könnte:

  1. Jedesmal, der Kunde vergisst sein Passwort, müssen Sie möglicherweise Datenbank Anrufe tätigen, die
  2. Es würde in einer Art und Weise die Sicherheit zu erhöhen, wie jeder kann teuer sein, die ändert das Passwort nicht in der Lage, mit dem Server mit Kenntnis des vorherigen SecretString zu kommunizieren. Ein neues vorinstalliertes Geheimnis muss entschieden werden .. und validiert mit dem neuen registrierten Passwort.

Insgesamt erhöht es die Sicherheit. Es hängt jedoch vom Zweck oder der Nutzung der Infrastruktur ab. Wenn es ein System ist, in dem Benutzer Passwörter häufig vergessen .. ist dies möglicherweise keine gute Option.

Verwandte Themen