Client OAuth pour JavaScript (Node.js) : aperçu et exemples d'utilisation

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

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-oauth2


Exemple : 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 oauth4webapi


Exemple : 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

Recommendations