Heim > Web-Frontend > js-Tutorial > HTTP -Authentifizierung in node.js

HTTP -Authentifizierung in node.js

Jennifer Aniston
Freigeben: 2025-02-25 15:32:08
Original
144 Leute haben es durchsucht

HTTP Authentication in Node.js

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

  • grundlegende Zugriffsauthentifizierung und Digest -Zugriffsauthentifizierung sind zwei HTTP -Authentifizierungsmethoden in Node.js. Die grundlegende Zugriffsauthentifizierung ist einfacher und fordert den Benutzer für einen Benutzernamen und ein Kennwort auf, während die Authentifizierung von Digest Access sicherer ist, da das Kennwort vor der Übertragung verschlüsselt.
  • node.js Utility 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.
  • Die alleinige Verwendung der HTTP -Authentifizierung reicht nicht aus, um die Sicherheit Ihrer Node.js -Anwendung zu gewährleisten. Für eine bessere Sicherheit sollte es über HTTPS zugestellt werden. Express.js kann verwendet werden, um die HTTP -Authentifizierung in node.js zu implementieren und die 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.

Passwortdatei

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 dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

Ö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>
Nach dem Login kopieren
Nach dem Login kopieren

node.js Integration

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Einschränkungen

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.

Passwortdatei

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>
Nach dem Login kopieren
Nach dem Login kopieren

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
Nach dem Login kopieren

ü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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

node.js Integration

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
Nach dem Login kopieren
Nach dem Login kopieren
Nach dem Login kopieren

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.

Kurz gesagt, das obige fasst kurz den Kerninhalt des FAQ-Teils zusammen und führt die Pseudo-Originalverarbeitung im Originaltext durch. Alle Bildlinks bleiben unverändert.

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage