Aperçu des bibliothèques client OAuth pour JavaScript (Node.js)
OAuth (Open Authorization) est un protocole d'autorisation ouvert qui permet d'accorder à un tiers un accès limité aux ressources d'un utilisateur sans transmettre son identifiant et son mot de passe. Dans l'écosystème Node.js, il existe plusieurs bibliothèques matures implémentant OAuth 2.0 et OAuth 1.0a. Dans cet article, nous examinerons les trois solutions les plus populaires : simple-oauth2, oauth4webapi et Passport.js avec ses stratégies. Vous apprendrez comment choisir l'outil approprié et comment l'intégrer dans votre projet.
1. simple-oauth2 — client OAuth 2.0 universel
simple-oauth2 est une bibliothèque légère qui fournit une API propre pour travailler avec OAuth 2.0. Elle prend en charge tous les principaux types d'octroi (code d'autorisation, identifiants client, mot de passe, jeton d'actualisation). Idéale pour les applications serveur où un contrôle total du processus est nécessaire.
Installation
npm install simple-oauth2Exemple : autorisation via GitHub
const express = require('express');const simpleOAuth2 = require('simple-oauth2');const app = express();
const config = { client: { id: 'VOTRE_CLIENT_ID', secret: 'VOTRE_CLIENT_SECRET' }, auth: { tokenHost: 'https://github.com', tokenPath: '/login/oauth/access_token', authorizePath: '/login/oauth/authorize' }};
const oauth2 = new simpleOAuth2.ClientCredentials(config);
// Route pour démarrer l'autorisationapp.get('/auth/github', (req, res) => { const authorizationUri = oauth2.authorizeURL({ redirect_uri: 'http://localhost:3000/callback', scope: 'user:email' }); res.redirect(authorizationUri);});
// Route de callbackapp.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('Autorisation réussie !'); } catch (error) { console.error('Erreur lors de l\\'obtention du jeton', error); res.status(500).send('Erreur d\\'autorisation'); }});
app.listen(3000, () => console.log('Serveur démarré sur le port 3000'));2. oauth4webapi — standard moderne
oauth4webapi est une implémentation des dernières spécifications OAuth 2.0 et OpenID Connect. La bibliothèque n'a pas de dépendances externes, prend en charge PKCE (Proof Key for Code Exchange) et le travail avec JWK (JSON Web Keys). Recommandée pour les nouveaux projets où la sécurité et la conformité aux normes sont importantes.
Installation
npm install oauth4webapiExemple : autorisation avec PKCE
const express = require('express');const { AuthorizationServer, Client, generateCodeVerifier, generateCodeChallenge } = require('oauth4webapi');const app = express();
// Configuration du serveur d'autorisation (Google)const issuer = new URL('https://accounts.google.com');const server = new AuthorizationServer(issuer);const client = new Client({ client_id: 'VOTRE_CLIENT_ID', client_secret: 'VOTRE_CLIENT_SECRET', redirect_uris: ['http://localhost:3000/callback']});
app.get('/auth/google', async (req, res) => { const codeVerifier = generateCodeVerifier(); const codeChallenge = await generateCodeChallenge(codeVerifier); // Sauvegarder codeVerifier dans la session 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 Aussi dans la bibliothèque
Génération de PDF en C# (.NET) : Guide complet des bibliothèques
Swift Data pour Swift : guide complet avec exemples
Navigation Component Kotlin : guide complet avec exemples
Travailler avec Markdown en TypeScript : bibliothèques, parseurs et outils
Travailler avec YAML en Go (Golang) : bibliothèques go-yaml et yaml.v3