2012-10-11 7 views
6

Mehr von einer allgemeinen Point-out-the-Flaws-Frage zu einigen Vorschlägen für die Implementierung eines tokenbasierten Authentifizierungssystems, motiviert durch die Tatsache, dass Node.js nicht bereit zu sein scheint .Token-basierte Authentifizierung (in Node.js)

Da wir einen statuslosen API-Server für die Manipulation unseres Datenspeichers erstellen möchten, möchten wir unseren Benutzern ein Authentifizierungs-Token (ein "Ticket to Ride") bereitstellen, das in jedem Aufruf der API enthalten ist.

Frage ist, wie man dieses Token in einer sicheren Weise erzeugt.

[idea 1] - Der Benutzer fordert ein Auth-Token durch das Senden (Benutzer-ID, Passwort-Hash) auf Server - Server antwortet mit (user_id, EXPIRY_DATE), zufällig von dem API-Server signiert Key - Server Überprüfung der Gültigkeit des Token kann auf jede Anfrage - Server benötigen würde einen begrenzten Zeitraum speichern Token für

[Idee 2] - wie oben, aber vermeiden von Passwort-Hash Senden - der Benutzer fordert eine auth-Token - Der Server sendet dem Benutzer eine Challenge, der Benutzer führt dann die Challenge mit seinem (user_id, password_hash) -Paar - Server aus dies bestätigt und erzeugt dann Token gemäß Idee 1.

[Idee 3] - Einfachere, aber dann keiner zeit - der Passwort-Hash selbst als Auth-Token, das Token-Management-Problem zu vermeiden, in jeder Anforderung, gesendet Verwenden Beschränkt

[Idee 4] - wie 2, aber die challenged_hashed_by_ (user_id, password_hash) wird das Token und in jeder Anfrage

Danke für alle Hinweise

+0

Werfen Sie einen Blick auf diese: http://stackoverflow.com/questions/11187342/mongoose-express-authorisation-on-http-verbs – freakish

Antwort

0

Sie OAuth 2.0 mit Passport verwenden können. Passport selbst hat ein gutes Beispiel dafür, wie es zu verwenden ist, und es ist eine geeignete Lösung zum Sichern zustandsloser APIs, ohne das Benutzerkennwort bei jeder Anforderung zu senden.

Verwandte Themen