OAuth-Client für Node.js: Implementierung der Autorisierung über Google und GitHub

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

OAuth-Client für JavaScript (Node.js): Vollständige Anleitung

\n\n

OAuth (Open Authorization) ist ein offenes Protokoll, das es einer Drittanbieteranwendung ermöglicht, eingeschränkten Zugriff auf die Ressourcen eines Benutzers zu gewähren, ohne dessen Benutzernamen und Passwort weiterzugeben. In der Node.js-Welt ist die Implementierung eines OAuth-Clients eine der häufigsten Aufgaben bei der Erstellung moderner Webanwendungen. In diesem Artikel werden wir im Detail besprechen, wie Sie Ihren eigenen OAuth-Client für die Autorisierung über Google und GitHub schreiben, unter Verwendung der beliebten Bibliothek Passport.js.

\n\n

Was ist OAuth 2.0 und warum wird es benötigt?

\n

OAuth 2.0 ist ein Standard, der zur Delegierung des Zugriffs verwendet wird. Anstatt die Passwörter der Benutzer auf Ihrem eigenen Server zu speichern, leiten Sie sie auf die Seite des Anbieters (Google, GitHub, Facebook) weiter, wo sie ihre Zustimmung geben. Danach erhält Ihre Anwendung einen Access Token, mit dem sie im Namen des Benutzers auf die API des Anbieters zugreifen kann.

\n\n

Die wichtigsten Vorteile:

\n
    \n
  • Sicherheit — Passwörter werden nicht auf Ihrem Server gespeichert.
  • \n
  • Benutzerfreundlichkeit — Der Benutzer muss sich nicht neu registrieren.
  • \n
  • Flexibilität — Es können nur die Daten angefordert werden, die tatsächlich benötigt werden (Scope).
  • \n
\n\n

Installation der erforderlichen Pakete

\n

Für die Arbeit mit OAuth in Node.js verwenden wir die folgenden Bibliotheken:

\n
    \n
  • express — Web-Framework
  • \n
  • passport — Middleware für die Authentifizierung
  • \n
  • passport-google-oauth20 — Strategie für Google
  • \n
  • passport-github2 — Strategie für GitHub
  • \n
  • express-session — zum Speichern von Sitzungen
  • \n
\n\n

Installieren Sie sie mit einem Befehl:

\n
npm install express passport passport-google-oauth20 passport-github2 express-session
\n\n

Grundlegende Serverkonfiguration

\n

Erstellen wir eine Datei app.js und binden alle erforderlichen Module ein:

\n
const express = require('express');\nconst passport = require('passport');\nconst session = require('express-session');\nconst app = express();\n\n// Sitzungskonfiguration\napp.use(session({\n    secret: 'your-secret-key',\n    resave: false,\n    saveUninitialized: true\n}));\n\napp.use(passport.initialize());\napp.use(passport.session());\n\n// Platzhalter für die Benutzerserialisierung\npassport.serializeUser((user, done) => done(null, user));\npassport.deserializeUser((obj, done) => done(null, obj));\n\napp.listen(3000, () => console.log('Server läuft auf Port 3000'));
\n\n

Konfiguration der OAuth-Strategie für Google

\n

Bevor Sie beginnen, müssen Sie Ihre Anwendung in der Google Cloud Console registrieren und eine Client-ID und ein Client-Geheimnis erhalten. Geben Sie in den Einstellungen die Redirect-URI an: http://localhost:3000/auth/google/callback.

\n\n
const GoogleStrategy = require('passport-google-oauth20').Strategy;\n\npassport.use(new GoogleStrategy({\n    clientID: 'IHRE_GOOGLE_CLIENT_ID',\n    clientSecret: 'IHR_GOOGLE_CLIENT_SECRET',\n    callbackURL: 'http://localhost:3000/auth/google/callback'\n}, (accessToken, refreshToken, profile, done) => {\n    // Hier können Sie das Profil in der Datenbank speichern\n    return done(null, profile);\n}));\n\n// Routen für Google OAuth\napp.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));\n\napp.get('/auth/google/callback', \n    passport.authenticate('google', { failureRedirect: '/' }),\n    (req, res) => res.redirect('/profile')\n);
\n\n

Konfiguration der OAuth-Strategie für GitHub

\n

Für GitHub registrieren Sie eine OAuth-App in den GitHub-Entwicklereinstellungen. Homepage-URL: http://localhost:3000, Autorisierungs-Callback-UR

Empfehlungen