In den vorangegangenen Lektionen
haben wir verschiedene Strategien für die Benutzerauthentifizierung gesehen.
Wir begannen mit der Standardauthentifizierung
und gingen dann zu Cookies und
Express-Sitzungen über, um Benutzer zu authentifizieren und zu verfolgen.
In dieser Lektion werden wir uns Passport ansehen,
ein Knotenmodul, das die Authentifizierung ganz einfach,
unauffällig und unkompliziert in Ihrer Anwendung konfigurieren lässt.
Passport ist nichts anderes als eine Authentifizierungs-Middleware, die
verschiedene Strategien unterstützt, die für die Benutzerauthentifizierung verwendet werden können,
einschließlich einer lokalen Strategie wie die Verwendung von Benutzername und Passwort,
oder sogar Drittanbieter-Authentifizierung oder die Verwendung von OAuth oder OAuth 2.0,
wie Facebook, Twitter,
oder Google+ und so weiter.
Wir werden uns einige Details über Passport ansehen,
die lokale Authentifizierung unterstützt Passport.
Und in der folgenden Übung
werden wir unsere Anwendung aktualisieren, um die Verwendung von
Passport und Passport-Local Node Module zu ermöglichen.
lokale Authentifizierung mit Benutzername und Kennwort.
Also, wie ich ein wenig früher sagte,
ist Passport eine sehr nützliche Authentifizierungs-Middleware für Node.js Anwendungen.
Es macht es einfacher, die Authentifizierung zu implementieren.
Wie wir in den vorherigen Übungen gesehen haben,
beinhaltet die Authentifizierung eine Menge von sich wiederholenden Code und sich wiederholenden Aufgaben, die Fehler behandeln
und Möglichkeiten entwickeln,
die Benutzerauthentifizierung zu überprüfen und dann den Benutzer zu authentifizieren und so weiter.
All dies wird in Passport mit
verschiedenen Strategien vereinfacht, die für die Authentifizierung von Benutzern verwendet werden können.
Sie können beispielsweise eine lokale Strategie verwenden, die darauf basiert,
Benutzer mit einem Benutzernamen und Passwort in Ihrem System zu registrieren
und sie anschließend mit Benutzername und Passwort zu authentifizieren.
Passport unterstützt auch OpenID-basierte Authentifizierung
oder OAuth oder OAuth 2.0-basierte Authentifizierung,
wie sie von Drittanbietern wie Facebook,
Twitter, Google+ usw. unterstützt wird.
Wir können auch das, was als
JSON-Web-Token bezeichnet wird, als eine andere Möglichkeit der Authentifizierung namens tokenbasierte Authentifizierung verwenden.
Im späteren Teil dieser Lektion werden wir uns die tokenbasierte Authentifizierung ansehen.
Passport unterstützt auch Sitzungen.
Wie wir in der vorherigen Übung und in der vorherigen Lektion gesehen haben,
sind Express-Sitzungen eine einfache Möglichkeit, Benutzer auf
der Serverseite zu verfolgen und eingehende Anfragen von Clients zu bearbeiten.
Um Passport nutzen zu können,
installieren wir natürlich das Passport-Modul.
In der folgenden Übung
installieren wir auch das Passport-Local-Modul, um
die lokale Strategie für die Benutzerauthentifizierung bereitzustellen.
Die Verwendung von Passport innerhalb unserer Anwendung ist ziemlich unkompliziert.
Auf den Routen, auf denen wir die Authentifizierung durchführen möchten,
geben wir einfach Passauthentifizierung an und geben dann
die spezifische Authentifizierungsstrategie an, die wir für die Benutzerauthentifizierung verwenden möchten.
Als Beispiel hier
sehen Sie, dass wir
eine lokale Authentifizierung anwenden, indem Sie sagen, dass Reisepass authentifizieren und lokal.
Und so verwendet es die lokale Strategie für die Authentifizierung der Benutzer.
Wenn die Authentifizierung erfolgreich ist,
fährt die Middleware mit dem nächsten Schritt fort,
wo wir die eingehende Anfrage weiter verarbeiten können.
Nach Abschluss der erfolgreichen Authentifizierung des Benutzerpasses
fügt Passport selbst der Anforderungsnachricht eine Benutzereigenschaft hinzu.
So wird req.user für uns mit den dort enthaltenen Informationen des Nutzers zur Verfügung gestellt,
die wir anschließend innerhalb
unserer ausdrücklichen Anwendung verwenden können, um die Anfrage von bestimmten Nutzern zu bearbeiten.
Dies hilft uns also leicht zu identifizieren, welcher Kunde die Anfrage an
unsere Anwendung gesendet hat und folglich
die Anfrage entsprechend auf der Identität des Benutzers bedient.
Zusammen mit Passport installieren wir
ein weiteres Passport-bezogenes Modul namens Passport-Local.
Passport-Local unterstützt eine Strategie,
die als lokale Strategie für die Authentifizierung von Benutzern
mit der Standard-Benutzernamenpasswort-Kombination bezeichnet wird.
So richten wir das Benutzerschema ein,
wie wir es zuvor getan haben,
und verwenden dann das Benutzerschema oder das Benutzermodell, um den Benutzernamen und das
Passwort zu verfolgen und dann Passport-Local hängt davon ab, um den Benutzernamen und das Passwort zu überprüfen. Um
es erneut zu installieren,
als ein Node-Modul,
installieren wir es mit dem Standardverfahren für die Installation des Passport-Local Node Moduls.
Sobald das Passport-Local Node Modul installiert ist,
müssen wir die lokale Strategie angeben und wie es tatsächlich in Passport verwendet wird.
Also, um eine lokale Strategie zu spezifizieren, sagen wir;
passport.use, und so wird es uns ermöglichen, die lokale Strategie zu verwenden.
Nachdem wir also den Passport-Local installiert haben,
werden wir eine neue lokale Strategie deklarieren und dann
die entsprechende Verifizierungsfunktion bereitstellen, die für die Überprüfung des Benutzers verwendet wird.
Wenn Sie eine MongoDB als Back-End-Speicher verwenden, dann,
um uns mit Passport-Local-Strategie zu helfen,
gibt es ein anderes Modul namens Passport-Local Mongoose.
Das Passport-Local Mongoose Modul bietet
ein Mongoose Plugin, das den Benutzernamen und das Passwort Login vereinfacht.
Indem Sie das Passport-Local Mongoose Plugin installieren und
es dann verwenden, wenn wir das Benutzerschema und das Modell definieren
und dadurch die Unterstützung des Passport-Local Mongoose Moduls verwenden,
fügt dieses Mungo Plugin den Benutzernamen und
eine verschlüsselte Art der Speicherung des Passworts innerhalb unseres Benutzers -Modell.
Die Verschlüsselung erfolgt mithilfe von Hashing für
das Passwort, das wir für die Registrierung von Benutzern verwenden,
und der Hash selbst verwendet ein salt-Feld.
Wenn Sie also etwas über Kryptografie wissen,
ist das Salz in der Kryptographie eine zufällige Zeichenfolge, die für
die Durchführung der Hash-Operation auf dem Passwort zum Speichern verwendet wird.
So wird das Hash-Passwort selbst tatsächlich in unserer MongoDB-Datenbank gespeichert.
Das eigentliche Passwort wird nicht gespeichert.
Also, wenn der Benutzer versucht, sich mit dem Benutzernamen und Passwort zu authentifizieren,
wird das Passwort wieder gehasht und dann mit
den in unserer Datenbank gespeicherten gehashten Passwörtern verglichen und dies
alles wird durch das Mongoose Plugin, das Passport-Local Mongoose, bereitgestellt.
Darüber hinaus fügt der Passport-Local Mungo auch zusätzliche Methoden hinzu, die
sehr nützlich für die Konfiguration der Passport-Local-Strategie sind.
Also innerhalb unserer Anwendung, wenn wir das Benutzerschema und das Modell definieren,
werden wir den Passport-Local Mongoose importieren und dann
als Plugin für das Benutzerschema hinzufügen.
Dieses Passport-Local Mongoose Modul
fügt automatisch, wie ich sagte, das Benutzernamenfeld und auch
ein Hash-Passwort-Speicherfeld mit einem Salt-Wert hinzu, den es für das Hashing verwendet,
und bietet auch zusätzliche Methoden, die es uns ermöglichen,
unsere Passport-Local-Strategie zu konfigurieren.
Wenn wir das Passport-Local Mongoose Modul verwenden,
dann die lokale Strategie,
das Passport-Local Mongoose Plugin unterstützt auf
dem Benutzermodell eine Authentifizierungsmethode, die automatisch die Authentifizierung durchführt.
Auf der vorangegangenen Folie hatte ich Ihnen gezeigt, wie wir die lokale Strategie umsetzen würden.
Jetzt wird dies automatisch für Sie von Passport-Local Mongoose bereitgestellt,
indem Sie einfach neue localstrategy user.authenticate sagen.
Dann müssen wir den Authentifizierungscode für die lokale Strategie nicht explizit schreiben.
Wenn Sie Sitzungen verwenden, die von Passport unterstützt werden,
müssen die Benutzerinformationen für unterstützende Sitzungen serialisiert werden, um
mit den Sitzungsinformationen auf der Serverseite und dann,
wenn die Anforderung eingeht,
von der Sitzungs-ID,
die Benutzerinformationen muss deserialisiert werden, um
die Benutzerinformationen aus unseren Sitzungsinformationen zu extrahieren, die auf der Serverseite gespeichert sind.
Jetzt
wird dieser Serialisierungs- und Deserialisierungsvorgang bereits von Passport-Local Mongoose durch
den serialisieren-Benutzer und
die deserialisieren-Benutzermethoden unterstützt, die über das Passport-Local Mongoose Plugin verfügbar sind.
Nachdem wir dies gesehen haben,
werden wir nun in der Übung sehen, wie einfach es ist,
lokale Strategie für die Authentifizierung von Benutzern mit Passport,
Passport-Local und Passport-Local Mongoose Node Module zu konfigurieren.