Ü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-oauth2Beispiel: 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 oauth4webapiBeispiel: 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 Auch in der Bibliothek
go-playground/validator | Datenvalidierung in Go
SMS-Versand mit C# (.NET): Integration mit SMS-API-Diensten
Arbeiten mit XML in C++: Bibliotheken pugixml, TinyXML-2 und RapidXML
Java-Bildverarbeitung: Größenänderung und Zuschnitt (resize, crop)