2013-10-04 5 views

Antwort

53

Wenn ich richtig verstehe, sind die Unterschiede zwischen den lokalen, Basic und Digest Strategien in Passport.js subtil, aber wichtig. Hier ist der Überblick:

Lokale (passport-local)

Passport lokale Strategie ist ein einfaches Benutzername und Passwort-Authentifizierungsschema. Es findet das Passwort eines bestimmten Benutzers aus dem Benutzernamen (oder einer anderen Kennung) und überprüft, ob sie übereinstimmen. Der Hauptunterschied zwischen der lokalen Strategie und den beiden anderen Strategien besteht in der Verwendung von dauerhaften Anmeldesitzungen. Diese Strategie sollte über SSL/TLS verwendet werden.

Grund (passport-http)

Die von Passport implementiert grundlegende Strategie sieht fast identisch mit der lokalen Strategie, mit einem feinen Unterschied. Die grundlegende Strategie besteht darin, API-Endpunkte zu verwenden, bei denen die Architektur zustandslos ist. Als Ergebnis sind Sitzungen nicht erforderlich, aber kann verwendet werden. Diese Strategie sollte auch SSL/TLS verwenden. Die Session-Flag kann wie so eingestellt werden:

app.get('/private', passport.authenticate('basic', { session: false }), function(req, res) { 
    res.json(req.user); 
}); 

Digest (passport-http)

Der Digest-Strategie ist auf subtile Weise anders als die beiden anderen Strategien, dass sie mit Hilfe eines speziellen Challenge-Response-Paradigma, um Vermeiden Sie das Senden des Passworts im Klartext. Diese Strategie wäre eine gute Lösung, wenn SSL/TLS nicht verfügbar wäre.

Dies ist ein guter Artikel auf Basis vs. Digest: How to Authenticate APIs

Hinweis: Alle drei Strategien Session-Unterstützung optional machen. Die beiden Pass-http-Strategien können Sie die Session-Flag setzen, während der Passport docs sagen, in Bezug auf die Pass lokale Strategie:

Beachten Sie, dass Session-Unterstützung ermöglicht völlig optional ist, obwohl es für die meisten Anwendungen empfohlen.

+2

"Die grundlegende Strategie ist mit API-Endpunkten verwendet werden, wo die Architektur zustandslos ist" - was meinst du mit Staatenlosen? Kannst du ein paar Beispiele geben?Wenn ich die Dinge richtig verstehe, geht es bei der lokalen Strategie nur um "Wenn Sie bereits Benutzersitzungen unterstützen, zum Beispiel um temporäre Variablen pro Sitzung zu speichern, identifiziert das Cookie die Sitzung bereits und es ist sinnlos, den Benutzernamen und das Passwort jedes Mal zu senden ". – Oren

+3

Die grundlegende Strategie verwendet die "Authentifizierung" Header für die Authentifizierung siehe https://github.com/jaredhanson/passport-http/blob/master/lib/passport-http/strategies/basic.js#L68 – Vadim

+0

@Vadim Vielen Dank !! ! Du rettest mein Leben :) –

2

Wenn Sie die Passport Lokale Strategie: - eine Sitzung aufgebaut wird, so dass Sie bei jeder Anfrage nicht creds schicken müssen; - Benutzername und Passwort sind standardmäßig in den Kopfzeilen "username" und "password" angegeben; Wenn Sie die Passport Basic/Digest-Strategien verwenden: - eine Sitzung wird nicht verwendet, daher müssen Sie die Anmeldeinformationen bei jedem API-Aufruf angeben - Benutzername und Passwort/Hash sind im Header "Authorization" enthalten;

Verwandte Themen