OAuth-Client für JavaScript (Node.js): Überblick und Anwendungsbeispiele

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

Überblick über OAuth-Client-Bibliotheken für JavaScript (Node.js)



OAuth (Open Authorization) ist ein offenes Autorisierungsprotokoll, das es Drittanbietern ermöglicht, eingeschränkten Zugriff auf Benutzerressourcen zu gewähren, ohne Login und Passwort weiterzugeben. Im Node.js-Ökosystem gibt es mehrere ausgereifte Bibliotheken, die OAuth 2.0 und OAuth 1.0a implementieren. In diesem Artikel betrachten wir die drei beliebtesten Lösungen: simple-oauth2, oauth4webapi und Passport.js mit seinen Strategien. Sie erfahren, wie Sie das passende Werkzeug auswählen und in Ihr Projekt integrieren.



1. simple-oauth2 — universeller OAuth 2.0-Client



simple-oauth2 ist eine leichtgewichtige Bibliothek, die eine saubere API für die Arbeit mit OAuth 2.0 bereitstellt. Sie unterstützt alle wichtigen Grant-Typen (Authorization Code, Client Credentials, Password, Refresh Token). Ideal für serverseitige Anwendungen, bei denen die vollständige Kontrolle über den Prozess erforderlich ist.



Installation

npm install simple-oauth2


Beispiel: Autorisierung über GitHub

const express = require('express');const simpleOAuth2 = require('simple-oauth2');const app = express();

const config = { client: { id: 'IHRE_CLIENT_ID', secret: 'IHR_CLIENT_SECRET' }, auth: { tokenHost: 'https://github.com', tokenPath: '/login/oauth/access_token', authorizePath: '/login/oauth/authorize' }};

const oauth2 = new simpleOAuth2.ClientCredentials(config);

// Route zum Starten der Autorisierungapp.get('/auth/github', (req, res) => { const authorizationUri = oauth2.authorizeURL({ redirect_uri: 'http://localhost:3000/callback', scope: 'user:email' }); res.redirect(authorizationUri);});

// Callback-Routeapp.get('/callback', async (req, res) => { const { code } = req.query; try { const result = await oauth2.getToken({ code, redirect_uri: 'http://localhost:3000/callback' }); const accessToken = oauth2.createToken(result); console.log('Access Token:', accessToken.token.access_token); res.send('Autorisierung erfolgreich!'); } catch (error) { console.error('Fehler beim Abrufen des Tokens', error); res.status(500).send('Autorisierungsfehler'); }});

app.listen(3000, () => console.log('Server läuft auf Port 3000'));


2. oauth4webapi — moderner Standard



oauth4webapi ist eine Implementierung der neuesten OAuth 2.0- und OpenID Connect-Spezifikationen. Die Bibliothek hat keine externen Abhängigkeiten, unterstützt PKCE (Proof Key for Code Exchange) und die Arbeit mit JWK (JSON Web Keys). Empfohlen für neue Projekte, bei denen Sicherheit und Standardkonformität wichtig sind.



Installation

npm install oauth4webapi


Beispiel: Autorisierung mit PKCE

const express = require('express');const { AuthorizationServer, Client, generateCodeVerifier, generateCodeChallenge } = require('oauth4webapi');const app = express();

// Konfiguration des Autorisierungsservers (Google)const issuer = new URL('https://accounts.google.com');const server = new AuthorizationServer(issuer);const client = new Client({ client_id: 'IHRE_CLIENT_ID', client_secret: 'IHR_CLIENT_SECRET', redirect_uris: ['http://localhost:3000/callback']});

app.get('/auth/google', async (req, res) => { const codeVerifier = generateCodeVerifier(); const codeChallenge = await generateCodeChallenge(codeVerifier); // Speichern des codeVerifier in der Sitzung req.session.codeVerifier = codeVerifier;

const authorizationUrl = new URL(server.authorization_endpoint); authorizationUrl.searchParams.set('client_id', client.client_id); authorizationUrl.searchParams.set('redirect_uri', client.redirect_uris[0]); authorizationUrl.searchParams.set('response_type', 'code'); authorizationUrl.searchParams.set('scope', 'openid profile email'); auth

Empfehlungen