Heim > Web-Frontend > js-Tutorial > Verwenden von JSON -Web -Token mit node.js

Verwenden von JSON -Web -Token mit node.js

尊渡假赌尊渡假赌尊渡假赌
Freigeben: 2025-02-08 10:26:19
Original
228 Leute haben es durchsucht

Using JSON Web Tokens with Node.js

API -Authentifizierung ist eine der größten Herausforderungen beim Aufbau einer API und einer der größten Sicherheitslücken der API. Der korrekte Authentifizierungsmechanismus kann Sicherheitsbedrohungen vermieden und stellt sicher, dass nur autorisierte Benutzer auf die erforderlichen Daten zugreifen können.

Authentifizierung war einmal einfach, wenn es sich um serverseitige Anwendungen handelt. Eine einfache Sitzungsüberprüfung auf dem Server reicht aus, um die Benutzerberechtigungen für den Vorgang sicherzustellen. Das Aufkommen von APIs hat jedoch erhebliche Änderungen an diesen Authentifizierungsherausforderungen geführt.

Für APIs können Sie jedoch keine Sitzung implementieren. Sie können nicht garantieren, dass Ihre API immer mit einem Webbrowser aufgerufen wird, sodass Sie sich nicht auf Cookies verlassen können, um Ihre API zu schützen. Eine der Hauptmerkmale einer API ist ihre Staatenlosigkeit, was bedeutet, dass jede an die API gesendete Anfrage nicht von früheren oder nachfolgenden Anforderungen abhängt. Daher benötigen Sie eine Möglichkeit, die für Überprüfungsanfragen erforderlichen Authentifizierungs-/Autorisierungsinformationen zu tragen.

Eine effektive API -Authentifizierungstechnik besteht darin, JSON Web Token (JWT) zu verwenden. In diesem Artikel werden wir uns mit den Details von JWT befassen und eine umfassende Anleitung zur Implementierung der Rest -API mit Node.js, JWT als Sicherheitsmaßnahme angeben.

Schlüsselpunkte

  1. Implementieren Sie JWT, um eine sichere Kommunikation zu gewährleisten. Dieser Artikel enthält eine eingehende Anleitung zur Implementierung von JWT zur Authentifizierung in Webanwendungen. Dies schließt die Erzeugung, Übertragung und Überprüfung der Token ein. Dies verbessert die Gesamt -API -Sicherheit, indem sie die Verstoß gegen die Zugriffskontrolle verhindern und nur autorisierte Mitarbeiter zugreifen können.
  2. rollenbasierte Zugriffskontrolle in JWT. Dieser Artikel zeigt einen Überblick über die rollenbasierte Zugriffskontrolle, bei der bestimmte API-Endpunkte auf bestimmte Rollenzugriff beschränkt sind. Ein Administrator kann beispielsweise alle Benutzer anzeigen, während ein Kunde dies nicht kann. In diesem Artikel verwaltet dies benutzerdefinierte Erklärungen in JWT -Token.
  3. Implementieren Sie JWT in der Rest -API. Dieser Artikel enthält einen Schritt-für-Schritt-Ansatz zum Erstellen einer einfachen REST-API für die JWT-Authentifizierung mithilfe der Bibliotheken node.js, Express und JSONWEBTOKE. Dies umfasst das Einrichten von Projekten, die Installation der erforderlichen Bibliotheken, das Erstellen grundlegender Benutzerdatenbanken sowie das Implementieren von Anmelde- und Benutzerdatenendpunkten. Bei diesem Prozess wird ein Token generiert, wenn der Benutzer dieses Token in nachfolgenden Anfragen zur Genehmigung oder Ablehnung des Zugriffs auf der Grundlage der Rolle des Benutzers anmeldet.

Was ist ein JSON -Web -Token (JWT)?

JSON Web Token (JWT) ist ein offener Standard (RFC 7519), der eine Methode zur Übertragung von Informationen in Form eines JSON -Objekts zwischen zwei Parteien (Client und Server) definiert. Es ist wichtig zu beachten, dass die zwischen den beiden Parteien übertragenen Informationen unter Verwendung einer privaten Signatur digital signiert werden. Daher wird dies als verifiziert angesehen und die Daten können sicher verwendet werden.

Hinweis: Normalerweise wird JWT zum Erstellen von Authentifizierungs- und Autorisierungsprozessen für APIs verwendet.

Zum Beispiel sind Informationen, mit denen ein Benutzer mit einer Anforderung in Verbindung gebracht werden kann, normalerweise im JWT enthalten. Dies kann Benutzer -ID und Rollen umfassen, und Ihre API kann diese Informationen verwenden, um festzustellen, ob der Benutzer, der die Anforderung sendet, die Berechtigung hat.

Wann sollte ich JWT verwenden?

Es gibt normalerweise zwei Hauptsituationen, die ein JWT -Token verwenden müssen.

  1. Authentifizierung/Autorisierung. Dies ist einer der am häufigsten anerkannten Anwendungsfälle für JWT. Sie können ein Authentifizierungs -Token erstellen, um Anfragen an der API zu überprüfen und sicherzustellen, dass der autorisierte Benutzer eine Autorisierungsoperation durchführt.
  2. Informationsaustausch. Sie können JWT auch verwenden, um Informationen zwischen den beiden Parteien sicher zu tauschen. Sie dienen als eine gültige und akzeptable Form von Daten, da JWTs unterzeichnet werden können. Mit einem öffentlichen/privaten Schlüsselpaar können Sie beispielsweise sicherstellen, dass der Absender die Person ist, die er selbst nennt. Auf diese Weise können Sie zusätzliche Überprüfungen durchführen, um sicherzustellen, dass Ihre Informationen nicht manipuliert wurden.

Struktur von JWT Token

Um alle Funktionen zu implementieren, ist die Struktur des JWT -Tokens spezifisch. Es hat drei Schlüsselkomponenten:

  1. Header. Der -Header enthält zwei Teile: den Token -Typ JWT und der verwendete Signaturalgorithmus, wie HMAC SHA256 oder RSA.
  2. Nutzlast. Die Nutzlast enthält Ihre Erklärung. Eine Erklärung sind Informationen, die das Unternehmen beschreiben, dem Sie ein Token ausgeben. Wenn Sie beispielsweise ein Token an einen Benutzer ausgeben, gibt es Anweisungen wie Benutzer -ID und Rolle. Darüber hinaus verfügen JWT -Token auch über eine Reihe von Standardaussagen wie Emittenten, Ausgabesteit, Ablaufzeit usw.
  3. Signatur. Das müssen Sie erstellen. Um eine Signatur zu erstellen, müssen Sie den codierten Header, die codierte Nutzlast, den Schlüssel und den im Header angegebenen Algorithmus nehmen und unterschreiben. Dies geschieht, um sicherzustellen, dass die Nachricht während der Übertragung nicht geändert wird.

Hinweis: Ihr JWT -Token ist eine einfache Base64 -Zeichenfolge, die diese drei Komponenten enthält, die jeweils durch . getrennt sind.

Zum Beispiel könnte ein einfaches Token so aussehen:

<code>header.payload.signature</code>
Nach dem Login kopieren
Nach dem Login kopieren

Außerdem sieht Ihr Dekodierungs -Token wie unten aus.

Using JSON Web Tokens with Node.js

Wie Sie sehen können, werden die Header, die Nutzlast und die Signatur entschlüsselt und angezeigt.

JWT -Prozess

Wenn Sie nun eine API mit JWT erstellen, müssen Sie Folgendes berücksichtigen:

  1. Login
  2. Token -Generation
  3. Token -Überprüfung

Dies kann der in der folgenden Abbildung gezeigten ähnlich sein.

Using JSON Web Tokens with Node.js

Die Schleife startet, wenn der Benutzer eine Anfrage zum ersten Mal bei der API einmeldet. Sie bieten Benutzernamen und Passwort. Ihre API überprüft, ob die Anmeldeinformationen gültig sind und in diesem Fall ein JWT -Token für den Benutzer generieren.

Als nächstes wird Ihr Benutzer jedes Mal, wenn die Anfrage ausgeführt wird, als Träger -Token in die Anfrage -Header - Autorisierung - als Trägermark einbezogen. Ihre API muss die Anfrage -Header für alle Anfragen anzeigen und das Token dekodieren und überprüfen, um die Anfrage zu genehmigen.

Befolgen Sie diese Prozedur, wenn Sie JWT verwenden. Wenn Ihrem Header ein JWT -Token fehlt, lehnt die API die Anfrage ab.

REST -API mit jwt

bauen

Eine API mit JWT -Authentifizierung erstellen ist einfacher als es scheint. Es gibt viele Bibliotheken, die den Prozess der Token -Generierung und -überprüfung durch einfache API -Methoden bewältigen.

Erstellen wir also eine einfache REST -API mit JWT -Authentifizierung.

Beginnen wir damit, ein Projekt mit dem folgenden Befehl zu starten:

<code>header.payload.signature</code>
Nach dem Login kopieren
Nach dem Login kopieren

Hinweis: Stellen Sie sicher, dass Sie die Standardkonfiguration fortsetzen.

Als nächstes installieren wir die von uns verwendete JWT -Bibliothek. Verwenden wir die JSONWEBTOKE -Bibliothek, um JWT -Token zu erstellen und zu verwalten.

Hinweis: Ich habe diese Bibliothek ausgewählt, da sie häufig auf GitHub aufrechterhalten wird und mehr als 14 Millionen Downloads pro Woche hat.

installieren Sie daher die Bibliothek mit dem folgenden Befehl:

npm init
Nach dem Login kopieren

Als nächstes installieren wir Express, um die API zu erstellen. Führen Sie dazu den folgenden Befehl aus:

npm i jsonwebtoken
Nach dem Login kopieren

Erstellen wir als nächstes eine database.js Datei. Da wir uns hier ausschließlich auf JWT konzentrieren, werde ich die Datenbank nicht starten, sondern eine Datenbank im Benutzercode verwalten. Öffnen Sie also Ihre database.js Datei und fügen Sie den folgenden Code hinzu:

// express - 用于构建 api
// cors - 用于启用跨域请求
// body-parser - 用于将主体解析为 JSON
npm i express cors body-parser
Nach dem Login kopieren

Wie Sie sehen, definieren wir eine Liste von Benutzern, die auf unsere API zugreifen können.

Hinweis: Wenn Sie dies in einer Produktionsumgebung erstellen, empfehle ich, einen Dienst wie Amazon Cognito zu verwenden, um Ihre Benutzer zu verwalten, oder in Betracht ziehen, Hashing zum Speichern von Kennwörtern zu verwenden.

Erstellen Sie als nächstes eine index.js Datei, um die API zu definieren. Öffnen Sie die Datei index.js und geben Sie den folgenden Code an: (Hier wird hier viel Code weggelassen, da das ursprüngliche Code -Beispiel zu windig ist und unnötige Details enthält, wie z. Umgebungen

index.js (Empfehlungsvorschläge für Schlüsselteile):

Zunächst müssen Sie einen sicheren

definieren und ihn niemals in Ihrem Code festhärten, aber sie sollten es aus Umgebungsvariablen lesen. tokenSecret Dann sollte Ihr Anmeldendpunkt so aussehen:

const users = [
    { id: '1', name: 'Lakindu', username: 'lak', password: '1234', role: 'customer' },
    { id: '2', name: 'David', username: 'david', password: '1234', role: 'customer' },
    { id: '3', name: 'John', username: 'john', password: '1234', role: 'customer' },
    { id: '4', name: 'Nishanthan', username: 'nishanthan', password: '1234', role: 'customer' },
    { id: '5', name: 'Pasindu', username: 'pasindu', password: '1234', role: 'customer' },
    { id: '6', name: 'Sahan', username: 'sahan', password: '1234', role: 'admin' },
]

module.exports = {
    users
}
Nach dem Login kopieren

Datenbankdesign:
const tokenSecret = process.env.TOKEN_SECRET; // 从环境变量读取密钥
if (!tokenSecret) {
  console.error("TOKEN_SECRET environment variable not set!");
  process.exit(1);
}
Nach dem Login kopieren
In praktischen Anwendungen benötigen Sie eine reale Datenbank (z. B. MongoDB, PostgreSQL), um Benutzerdaten zu speichern, und das Kennwort muss gehasht und nicht in Klarheit gespeichert werden.

Fehlerbehandlung:

Eine vollständige Fehlerbehandlungsmechanismen, z. B. Datenbankfehler, JWT -Überprüfungsfehler usw., sind erforderlich.

Sicherheit:

Denken Sie daran, dieses Beispiel ist nur eine einfache Demonstration und ist nicht für Produktionsumgebungen geeignet. In Produktionsumgebungen müssen Sie strengere Sicherheitsmaßnahmen ergreifen, wie:

  • Verwenden Sie stärkere Verschlüsselungsalgorithmen.
  • Verwenden Sie HTTPS.
  • Implementieren Sie eine feinere granulare Zugriffskontrolle.
  • regelmäßig Tasten drehen.
  • Verwenden Sie einen sichereren Passworthashing -Algorithmus (z. B. Bcrypt).
  • Verwenden Sie die Geschwindigkeitsbeschränkung, um Brute -Force -Risse zu verhindern.

Der Rest der Teile (Überprüfung von Middleware und Routing -Schutz) muss basierend auf dem geänderten Anmeldendpunkt und der Datenbankstruktur entsprechend angepasst werden. Denken Sie daran, immer die Sicherheit zu priorisieren und gut getestete und gepflegte Bibliotheken zu verwenden.

Zusammenfassung

Dieser Artikel bietet kurz einen Überblick darüber, wie eine sichere REST -API mit JWT erstellt wird. Um jedoch in einer Produktionsumgebung bereitzustellen, müssen Sie die Sicherheit sorgfältig berücksichtigen und robustere Datenbanken und Fehlerbehandlungsmechanismen verwenden. Denken Sie daran, dass Sicherheit ein fortlaufender Prozess ist, der eine kontinuierliche Verbesserung und Aktualisierung erfordert.

FAQs (FAQs) (Die langen FAQs -Abschnitte im Originaltext werden hier weggelassen, da sie mit den oben angegebenen Änderungsvorschlägen wiederholt werden)

Das obige ist der detaillierte Inhalt vonVerwenden von JSON -Web -Token mit 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage