suchen
HeimWeb-Frontendjs-TutorialSo implementieren Sie die OAuth2.0-Autorisierungsdienstauthentifizierung in NodeJS

In diesem Artikel werden hauptsächlich Nodejs zur Implementierung der OAuth2.0-Autorisierungsdienstauthentifizierung vorgestellt. Jetzt teile ich ihn mit Ihnen und gebe ihn als Referenz.

OAuth ist ein Netzwerkstandard für die Entwicklungsautorisierung. Die vollständige Schreibweise ist offene Autorisierung, was bedeutet, dass die neueste Protokollversion 2.0 ist.

Zum Beispiel:

Es gibt eine „Cloud-Printing“-Website, auf der von Nutzern bei Google gespeicherte Fotos ausgedruckt werden können. Um diesen Dienst nutzen zu können, müssen Nutzer „Cloud Print“ erlauben, ihre bei Google gespeicherten Fotos auszulesen.

Die herkömmliche Methode besteht darin, dass der Benutzer „Cloud Print“ seinen Google-Benutzernamen und sein Passwort mitteilt, woraufhin Letzterer die Fotos des Benutzers lesen kann. Dieser Ansatz weist mehrere schwerwiegende Mängel auf.

  1. „Cloud Printing“ speichert das Passwort des Benutzers für nachfolgende Dienste, was sehr unsicher ist.

  2. Google muss die Passwort-Anmeldung bereitstellen, und wir wissen, dass eine einfache Passwort-Anmeldung nicht sicher ist.

  3. „Cloud Print“ hat die Macht, alle in Google gespeicherten Daten des Nutzers abzurufen, und Nutzer können den Umfang und die Gültigkeitsdauer der „Cloud Print“-Autorisierung nicht einschränken.

  4. Benutzer können die für „Cloud Printing“ gewährte Berechtigung nur durch eine Änderung ihres Passworts zurücknehmen. Dadurch werden jedoch alle anderen vom Benutzer autorisierten Drittanbieteranwendungen ungültig.

  5. Solange eine Drittanbieteranwendung geknackt wird, führt dies zum Verlust von Benutzerkennwörtern und zum Verlust aller passwortgeschützten Daten.

So wurde OAuth geboren!

  1. Drittanbieteranwendung: Drittanbieteranwendung, in diesem Artikel auch „Client“ genannt, bei der es sich um den „Cloud-Druck“ im Beispiel im vorherigen Abschnitt handelt.

  2. HTTP-Dienst: HTTP-Dienstanbieter, in diesem Artikel als „Dienstanbieter“ bezeichnet, im Beispiel im vorherigen Abschnitt Google.

  3. Ressourcenbesitzer: Ressourcenbesitzer, in diesem Artikel auch „Benutzer“ genannt.

  4. Benutzeragent: Benutzeragent, bezieht sich in diesem Artikel auf den Browser.

  5. Autorisierungsserver: Authentifizierungsserver, d. h. ein Server, der speziell vom Dienstanbieter für die Authentifizierung verwendet wird.

  6. Ressourcenserver: Ressourcenserver, also der Server, auf dem der Dienstanbieter benutzergenerierte Ressourcen speichert. Es und der Authentifizierungsserver können derselbe Server oder verschiedene Server sein.

Die Anmeldeschicht ermöglicht die Generierung von Token, wobei die Token Folgendes umfassen: Gültigkeitsdauer und Berechtigungsumfang. Der Client erhält das Token für den Zugriff auf eingeschränkte Ressourcen.

  1. access_token: Das Token, das beim Anfordern von Ressourcen mitgeführt werden muss, also das Zugriffstoken.

  2. refresh_token: Refresh-Token: Wenn das access_token abläuft, können Sie dieses Token verwenden, um ein neues access_token und ein neues restart_token zu erhalten. Im Allgemeinen hat „refresh_token“ eine längere Gültigkeit, beispielsweise ein Jahr, während „access_token“ eine kürzere Gültigkeit, beispielsweise einige Minuten, hat.

  3. Berechtigungsbereich: Geben Sie den Ressourcenberechtigungsbereich an, den der Client erhalten kann.

OAuth-Autorisierungsmodus

OAuth verfügt über vier Autorisierungsmodi, nämlich:

  1. Autorisierung Autorisierungscode

  2. Vereinfachter Modus (implizit)

  3. Passwortmodus (Ressourcenbesitzer-Passwort-Anmeldeinformationen)

  4. Client Modus (Client-Anmeldeinformationen)

1. Autorisierungscode-Modus

Der Autorisierungscode-Modus ist der strengste Autorisierungsmodus. Der Gesamtprozess ist: der Der Browser übermittelt die erforderlichen Informationen an die Autorisierungsseite. Nachdem der Client den Code erhalten hat, erhält er diesen im Austausch gegen ein Token.

2. Unter Passwortmodus versteht man einfach die Verwendung des Benutzers To Erhalten Sie access_token mit Parametern wie Name, Passwort usw., die Schritte sind wie folgt:

Der Benutzer stellt dem Client den Benutzernamen und das Passwort zur Verfügung.
  1. Der Client sendet den Benutzernamen und das Passwort an den Authentifizierungsserver und fordert von diesem ein Token an.
  2. Nachdem der Authentifizierungsserver die Richtigkeit bestätigt hat, stellt er dem Client das Zugriffstoken zur Verfügung.

3. Anwendung von Refresh_token

Refresh_token wird verwendet, um neue Access_token und Refresh_token zu erhalten Die Methode ist einfach wie folgt:

refresh_token ist ungültig:

Verwenden Sie nodejs, um den OAuth-Autorisierungsdienst zu implementieren

Technologie-Stack:

nodejs + eggjs
  1. eggjs-oAuth-server-Plug-in

Einzelheiten finden Sie unter:
https://github.com/Azard/egg-oauth2-server
https://cnodejs.org/topic/592b2aedba8670562a40f60b

1. Code-Gewährungsmodustest und Single-Sign-On-Implementierung

Hier erstellen wir zwei Sites, eine ist Port 7001 (Autorisierungsdienst) und die andere ist Port 7002 ( Client), Autorisierung Der Modus ist Codegewährung.

Zuerst ist die Kunden-Anmeldeseite:

Klicken Sie auf die Schaltfläche, um sich direkt anzumelden:

Es kann festgestellt werden, dass der Browser zur autorisierten Dienstadresse umleitet und die drei Parameter response_type, client_id, redirect_uri trägt. Nach erfolgreicher Anmeldung leitet der Browser an die durch redirect_uri , also *http://127.0.0.1:7002/auth/redirect* hier:

Das Folgende ist die Schreibmethode der Anmeldeseite des Autorisierungsdienstes

<form action="/oauth2/authorize?{{query}}" id="form1" name="f" method="post">
  <p class="input_outer">
    <span class="u_user"></span>
    <input name="username" class="text" style="color: #FFFFFF !important" type="text" placeholder="请输入账户">
  </p>
  <p class="input_outer">
    <span class="us_uer"></span>
    <input name="password" class="text" style="color: #FFFFFF !important; position:absolute; z-index:100;"value="" type="password" placeholder="请输入密码">
  </p>
  <p class="mb2"><a class="act-but submit" href="javascript:;" rel="external nofollow" onclick="document.getElementById(&#39;form1&#39;).submit()" style="color: #FFFFFF">登录</a></p>
</form>

${query} hier ist die vollständige Abfrage, die von der Client-Anmeldeumleitung übertragen wird, und dann die Schreibmethode von /oauth2/authorize Route:

app.all(&#39;/oauth2/authorize&#39;, app.oAuth2Server.authorize());// 获取授权码

Hier rufen Sie app.oAuth2Server.authorize()

, das Plug-in führt automatisch einen Umleitungsvorgang durch. Nachdem der Client den Code und den Status erhalten hat, wird er weitergeleitet die Autorisierungsschicht zum Erhalten des Tokens:

async redirect(){
  // 服务端重定向过来的
  console.log(this.ctx.query)
  const result = await this.ctx.curl(&#39;http://127.0.0.1:7001/users/token&#39;, {
   dataType: &#39;json&#39;,
   // contentType: &#39;application/x-www-form-urlencoded&#39;, // 默认格式
   method: &#39;POST&#39;,
   timeout: 3000,
   data: {
    grant_type: &#39;authorization_code&#39;,
    code: this.ctx.query.code,
    state: this.ctx.query.state,
    client_id: client_id,
    client_secret: client_secret,
    redirect_uri: redirect_uri,
   }
  });
  this.ctx.body = result.data;
 }
Nach Erhalt des Tokens Normale Rückkehr:

2. Test des Passwortgewährungsmodus

Verwenden Sie zuerst Benutzernamen und Passwort, um den Zugriffstoken zu erhalten:

Wenn der Benutzername oder das Passwort falsch ist, geben Sie Folgendes zurück:

Verwenden Sie den Token, um autorisierte Ressourcen zu erhalten und normal zurückzukehren:

Zusammenfassung

    Wann tatsächlich Bei Verwendung von OAuth muss https verwendet werden, einschließlich Client und Autorisierungsserver
  1. Der Autorisierungsdienst kann private Schlüsselsignaturen verwenden, und der Client verwendet die Überprüfung öffentlicher Schlüssel, um die Datensicherheit sicherzustellen
  2. Das Obige habe ich für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So erstellen Sie einen Mehrpersonen-Chatroom in der NodeJS+Express-Umgebung

Ausführlich erklärt in Vue+ Webpack-Grundkonfiguration

Detaillierte Interpretation der Trennung und Kombination von Vue-Administrator und Backend (Flask)

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die OAuth2.0-Autorisierungsdienstauthentifizierung in NodeJS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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
C und JavaScript: Die Verbindung erklärteC und JavaScript: Die Verbindung erklärteApr 23, 2025 am 12:07 AM

C und JavaScript erreichen die Interoperabilität durch WebAssembly. 1) C -Code wird in das WebAssembly -Modul zusammengestellt und in die JavaScript -Umgebung eingeführt, um die Rechenleistung zu verbessern. 2) In der Spieleentwicklung kümmert sich C über Physik -Engines und Grafikwiedergabe, und JavaScript ist für die Spiellogik und die Benutzeroberfläche verantwortlich.

Von Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptVon Websites zu Apps: Die verschiedenen Anwendungen von JavaScriptApr 22, 2025 am 12:02 AM

JavaScript wird in Websites, mobilen Anwendungen, Desktop-Anwendungen und serverseitigen Programmierungen häufig verwendet. 1) In der Website -Entwicklung betreibt JavaScript DOM zusammen mit HTML und CSS, um dynamische Effekte zu erzielen und Frameworks wie JQuery und React zu unterstützen. 2) Durch reaktnatives und ionisches JavaScript wird ein plattformübergreifendes mobile Anwendungen entwickelt. 3) Mit dem Elektronenframework können JavaScript Desktop -Anwendungen erstellen. 4) Node.js ermöglicht es JavaScript, auf der Serverseite auszuführen und unterstützt hohe gleichzeitige Anforderungen.

Python gegen JavaScript: Anwendungsfälle und Anwendungen verglichenPython gegen JavaScript: Anwendungsfälle und Anwendungen verglichenApr 21, 2025 am 12:01 AM

Python eignet sich besser für Datenwissenschaft und Automatisierung, während JavaScript besser für die Entwicklung von Front-End- und Vollstapel geeignet ist. 1. Python funktioniert in Datenwissenschaft und maschinellem Lernen gut und unter Verwendung von Bibliotheken wie Numpy und Pandas für die Datenverarbeitung und -modellierung. 2. Python ist prägnant und effizient in der Automatisierung und Skripten. 3. JavaScript ist in der Front-End-Entwicklung unverzichtbar und wird verwendet, um dynamische Webseiten und einseitige Anwendungen zu erstellen. 4. JavaScript spielt eine Rolle bei der Back-End-Entwicklung durch Node.js und unterstützt die Entwicklung der Vollstapel.

Die Rolle von C/C bei JavaScript -Dolmetschern und CompilernDie Rolle von C/C bei JavaScript -Dolmetschern und CompilernApr 20, 2025 am 12:01 AM

C und C spielen eine wichtige Rolle in der JavaScript -Engine, die hauptsächlich zur Implementierung von Dolmetschern und JIT -Compilern verwendet wird. 1) C wird verwendet, um JavaScript -Quellcode zu analysieren und einen abstrakten Syntaxbaum zu generieren. 2) C ist für die Generierung und Ausführung von Bytecode verantwortlich. 3) C implementiert den JIT-Compiler, optimiert und kompiliert Hot-Spot-Code zur Laufzeit und verbessert die Ausführungseffizienz von JavaScript erheblich.

JavaScript in Aktion: Beispiele und Projekte in realer WeltJavaScript in Aktion: Beispiele und Projekte in realer WeltApr 19, 2025 am 12:13 AM

Die Anwendung von JavaScript in der realen Welt umfasst Front-End- und Back-End-Entwicklung. 1) Zeigen Sie Front-End-Anwendungen an, indem Sie eine TODO-Listanwendung erstellen, die DOM-Operationen und Ereignisverarbeitung umfasst. 2) Erstellen Sie RESTFUFFUPI über Node.js und express, um Back-End-Anwendungen zu demonstrieren.

JavaScript und das Web: Kernfunktionalität und AnwendungsfälleJavaScript und das Web: Kernfunktionalität und AnwendungsfälleApr 18, 2025 am 12:19 AM

Zu den Hauptanwendungen von JavaScript in der Webentwicklung gehören die Interaktion der Clients, die Formüberprüfung und die asynchrone Kommunikation. 1) Dynamisches Inhaltsaktualisierung und Benutzerinteraktion durch DOM -Operationen; 2) Die Kundenüberprüfung erfolgt vor dem Einreichung von Daten, um die Benutzererfahrung zu verbessern. 3) Die Aktualisierung der Kommunikation mit dem Server wird durch AJAX -Technologie erreicht.

Verständnis der JavaScript -Engine: ImplementierungsdetailsVerständnis der JavaScript -Engine: ImplementierungsdetailsApr 17, 2025 am 12:05 AM

Es ist für Entwickler wichtig, zu verstehen, wie die JavaScript -Engine intern funktioniert, da sie effizientere Code schreibt und Leistungs Engpässe und Optimierungsstrategien verstehen kann. 1) Der Workflow der Engine umfasst drei Phasen: Parsen, Kompilieren und Ausführung; 2) Während des Ausführungsprozesses führt die Engine dynamische Optimierung durch, wie z. B. Inline -Cache und versteckte Klassen. 3) Zu Best Practices gehören die Vermeidung globaler Variablen, die Optimierung von Schleifen, die Verwendung von const und lass und die Vermeidung übermäßiger Verwendung von Schließungen.

Python vs. JavaScript: Die Lernkurve und BenutzerfreundlichkeitPython vs. JavaScript: Die Lernkurve und BenutzerfreundlichkeitApr 16, 2025 am 12:12 AM

Python eignet sich besser für Anfänger mit einer reibungslosen Lernkurve und einer kurzen Syntax. JavaScript ist für die Front-End-Entwicklung mit einer steilen Lernkurve und einer flexiblen Syntax geeignet. 1. Python-Syntax ist intuitiv und für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet. 2. JavaScript ist flexibel und in Front-End- und serverseitiger Programmierung weit verbreitet.

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

PHPStorm Mac-Version

PHPStorm Mac-Version

Das neueste (2018.2.1) professionelle, integrierte PHP-Entwicklungstool

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)