Letzte Woche habe ich im Artikel "Erstellen eines Node.js HTTP -Servers" die Grundlagen von HTTP in Node.js. Der heutige Artikel zeigt Ihnen, wie Sie die HTTP -Authentifizierung verwenden, um Ihre Node.js -Site vor Passwortangriffen zu schützen. Wir werden zuerst die grundlegende Zugriffsauthentifizierung einführen und dann zur sichereren Digest -Zugriffsauthentifizierung wechseln.
Schlüsselpunkte
htpasswd
wird verwendet, um Kennwortdateien in der grundlegenden Zugriffsauthentifizierung zu verwalten, während htdigest
Dienstprogramm zur Verdauung der Zugriffsauthentifizierung verwendet wird. Kennwörter werden in der Kennwortdatei auf der Serverseite gespeichert, und das http-auth
-Modul wird zum Hinzufügen von Authentifizierungsunterstützung zum HTTP -Server verwendet. express-basic-auth
Middleware zu verwenden. grundlegende Zugriffsauthentifizierung
Wenn ein Benutzer auf eine Site zugreift, die die Authentifizierung implementiert, fordert das System ihn auf, seinen/ihren Benutzernamen und sein Passwort einzugeben. Wenn der Benutzer gültige Anmeldeinformationen angibt, werden er in den Inhalt der Seite gebracht, andernfalls werden er mit einer "401 nicht autorisierten" Antwort abgelehnt. Die einfachste Art der HTTP -Authentifizierung ist die grundlegende Zugriffsauthentifizierung.
Auf der Serverseite werden alle Benutzernamen und verschlüsselten Passwörter in der Kennwortdatei gespeichert. Node.js Utility htpasswd
kann zum Verwalten von Kennwortdateien verwendet werden. Verwenden Sie den folgenden Befehl, um htpasswd
zu installieren. npm
steht für den Paketmanager node.js, der standardmäßig mit node.js. npm
verwendet zum Installieren des Node.js -Moduls. -g
kennzeichnet das globale Installationspaket, was bedeutet, dass es in die Pfadvariable des Systems enthalten ist.
npm install -g htpasswd
Nach der Installation htpasswd
können Sie einen neuen Benutzer mit dem folgenden Befehl erstellen. In diesem Beispiel wird das Flag -c
eine neue Kennwortdatei mit dem Namen "htpasswd" erstellt. Fügen Sie in der neuen Datei einen Benutzer mit dem Namen "Foo" hinzu. Mit dem -b
-Flag ermöglicht das Passwort "Balkenleiste" als Teil der Befehlszeile.
htpasswd -bc htpasswd foo bar
Öffnen Sie nach dem Ausführen des Befehls Ihre "htpasswd" -Datei. Der Kennwortdateieintrag für Benutzer "Foo" ist unten angezeigt. Diese Zeile enthält den Benutzernamen und das verschlüsselte Passwort. Da dies der erste und einzige Benutzer in der Datei ist, sollte dies die einzige Zeile in der Datei sein.
<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
Der nächste Schritt besteht darin, unserem HTTP -Server Authentifizierungsunterstützung hinzuzufügen. Zunächst müssen Sie das http-auth
-Modul mit dem folgenden NPM -Befehl installieren.
npm install -g htpasswd
Erstellen Sie als nächstes eine neue Datei namens "Basic_auth_Server.js" und fügen Sie den folgenden Code hinzu. Beachten Sie, dass auf das http-auth
-Modul in Zeile 2 verwiesen wird. Übergeben Sie in den Zeilen 3 bis 7 das Konfigurationsobjekt an das Authentifizierungsmodul. Das Feld authRealm
definiert den Authentifizierungsbereich. Das Feld authFile
zeigt auf die zuvor erstellte Passwortdatei. __dirname
bezieht sich auf das Verzeichnis, in dem sich das derzeit ausgeführte Skript befindet. In diesem Beispiel geht davon aus, dass die Datei "htpasswd" im selben Verzeichnis wie "Basic_Auth_Server.js" befindet. Das Feld authType
Konfiguration gibt den zu verwendenden Authentifizierungsart an. In Zeile 9 wird das grundlegende Authentifizierungsschema auf die HTTP -Verbindung angewendet. Die Authentifizierungs -Rückruffunktion bietet einen authentifizierten Benutzernamen für die weitere Verarbeitung.
htpasswd -bc htpasswd foo bar
Starten Sie schließlich den Server. Sie können eine Verbindung zum Server herstellen, indem Sie zu https://www.php.cn/link/bb122c8fe6c764e8aae555e2186a6344 navigieren. Sie werden aufgefordert, Ihren Benutzernamen und Ihr Passwort einzugeben. Geben Sie die zuvor erstellten Anmeldeinformationen an und der Browser wird Ihnen mit Namen Hallo begrüßt.
Der größte Nachteil der grundlegenden Zugriffsauthentifizierung besteht darin, dass die Anmeldeinformationen als einfacher Text über das Netzwerk gesendet werden. Um Abhören zu verhindern, kann eine solche Authentifizierung nur mit sicheren (d. H. HTTPS) Verbindungen verwendet werden. Wenn keine sichere Verbindung verfügbar ist, sollten Sie stattdessen eine sichere Form der Authentifizierung verwenden.
Zugriffsauthentifizierung
Authentifizierung der digitalen Zugriff ist eine sichere Alternative zur grundlegenden Authentifizierung. Bei der Digest -Authentifizierung wird das Kennwort verschlüsselt, bevor das Netzwerk übertragen wird.
Ziffernauthentifizierung verwendet auch Kennwortdateien. Das Dateiformat unterscheidet sich jedoch geringfügig von dem in der grundlegenden Authentifizierung verwendeten. Um das Format für Digest -Kennwortdatei zu verwenden, verwenden wir ein anderes Dienstprogramm namens htdigest
. Verwenden Sie den folgenden NPM -Befehl, um htdigest
zu installieren.
<code>foo:{SHA}Ys23Ag/5IOWqZCw9QGaVDdHwH00=</code>
Verwenden Sie als nächstes den folgenden Befehl, um eine neue Kennwortdatei zu erstellen. In ähnlicher Weise wird mit dem -c
Flag eine neue Kennwortdatei mit dem Namen "Htpasswd" erstellt. Dieses Mal müssen wir auch ein Authentifizierungsfeld angeben. In diesem Fall ist das Authentifizierungsfeld "privater Bereich". In diesem Beispiel ist der Benutzername wieder "foo". Bitte beachten Sie, dass das Passwort im Befehl nicht angegeben ist. Nach dem Eingabe des Befehls werden Sie aufgefordert, Ihr Passwort anzugeben.
npm install http-auth
überprüfen Sie nach htdigest
die Innere der neuen "htpasswd" -Datei. Der Eintrag für "Foo" ist unten gezeigt. Die Digest -Authentifizierungsdatei enthält den Benutzernamen und das verschlüsselte Kennwort sowie den Authentifizierungsbereich, der nicht in der grundlegenden Authentifizierungsdatei enthalten ist.
npm install -g htpasswd
Um die Digest -Authentifizierung in unseren Server zu integrieren, verwenden wir das http-auth
-Modul erneut. Wenn Sie dieses Tutorial verfolgt haben, sollte das Modul bereits auf Ihrem Computer installiert sein. Erstellen Sie als Nächstes eine neue Datei namens "Digest_auth_Server.js", um Ihren Server zu implementieren. Der Servercode ist unten angezeigt. Beachten Sie, dass der Servercode nahezu dem grundlegenden Authentifizierungsservercode ist. Der Unterschied ist das Feld authType
des Konfigurationsobjekts. In diesem Fall wird authType
auf "Digest" gesetzt. Dieser Server kann wie ein grundlegender Authentifizierungsserver zugegriffen werden.
htpasswd -bc htpasswd foo bar
Schlussfolgerung
Dieser Artikel führt die Grundlagen der HTTP -Authentifizierung vor. Wenn Sie den hier bereitgestellten Beispielen befolgen, kann Ihre Node.js -Anwendung etwas sicherer sein. Sie sollten jedoch wissen, dass die Authentifizierung allein nicht ausreicht. Wenn Sicherheit das Hauptproblem ist, sollte Ihre Website über HTTPS bedient werden. In einem zukünftigen Beitrag werde ich HTTPS und viele andere großartige Node.js -Funktionen untersuchen. Wenn Ihnen dieser Beitrag gefallen hat, möchten Sie alles über die neueste Sammlung von Print- und E-Book-Jump-Start von SitePoint wissen. Das erste Buch ist Don Nguyens "Node.js" - Erfahren Sie mehr auf SitePoint!
(Das Folgende ist der FAQ -Teil. Aufgrund der Länge des Artikels werde ich den FAQ -Teil zusammenfassen, um Kerninformationen beizubehalten und Duplikation und Redundanz zu vermeiden.)
FAQ (FAQ) Über die HTTP -Authentifizierung in node.js
Wie implementieren Sie die HTTP -Authentifizierung mit Express.js in node.js? Verwenden Sie express-basic-auth
Middleware. Der Beispielcode zeigt, wie man sich mit einem Benutzernamen und einem Passwort authentifiziert.
Wie schützt ich meine Node.js -Anwendung mithilfe der HTTP -Authentifizierung? Verwenden Sie das Modul http-auth
und geben Sie den Passwortdateipfad an. Stellen Sie sicher, dass Sie HTTPS verwenden, um die Sicherheit zu verbessern.
Wie verwendet ich die HTTP -Authentifizierung, um mehrere Benutzer zu handhaben? Verwenden Sie eine Datei oder Datenbank, um Benutzername und Passwort zu speichern. Das Modul http-auth
unterstützt diese Funktion.
Wie kann man die HTTP -Authentifizierungsanforderungen in node.js anpassen? Stellen Sie die Option realm
fest.
Wie kann man mit dem Authentifizierungsfehler in Node.js umgehen? Der Server sendet eine nicht autorisierte 401 -Antwort. Sie können diese Antwort anpassen.
Wie verwendet ich die HTTP -Authentifizierung mit HTTPS? Erstellen Sie einen HTTPS -Server anstelle eines HTTP -Servers.
Wie verwendet ich die HTTP -Authentifizierung mit Cookies? Setzen Sie Cookies nach erfolgreicher Authentifizierung.
Wie verwendet ich die HTTP -Authentifizierung mit einer Sitzung? Session Middleware wie express-session
verwenden.
Wie verwendet ich die HTTP -Authentifizierung mit JSON Web Token (JWT)? Verwenden Sie JWT Middleware, z. B. express-jwt
.
Wie verwendet ich die HTTP -Authentifizierung mit OAuth? Verwenden Sie OAuth Middleware, z. B. passport
.
Das obige ist der detaillierte Inhalt vonHTTP -Authentifizierung in node.js. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!