Client OAuth pour JavaScript (Node.js) : guide complet
\n\nOAuth (Open Authorization) est un protocole ouvert qui permet d'accorder à une application tierce un accès limité aux ressources d'un utilisateur sans lui transmettre son identifiant et son mot de passe. Dans le monde Node.js, l'implémentation d'un client OAuth est l'une des tâches les plus courantes lors de la création d'applications web modernes. Dans cet article, nous allons détailler comment écrire votre propre client OAuth pour l'authentification via Google et GitHub, en utilisant la bibliothèque populaire Passport.js.
\n\nQu'est-ce qu'OAuth 2.0 et pourquoi en a-t-on besoin ?
\nOAuth 2.0 est une norme utilisée pour la délégation d'accès. Au lieu de stocker les mots de passe des utilisateurs sur votre serveur, vous les redirigez vers la page du fournisseur (Google, GitHub, Facebook), où ils donnent leur consentement. Ensuite, votre application reçoit un jeton d'accès (access token), avec lequel elle peut accéder à l'API du fournisseur au nom de l'utilisateur.
\n\nPrincipaux avantages :
\n- \n
- Sécurité — les mots de passe ne sont pas stockés sur votre serveur. \n
- Commodité pour l'utilisateur — pas besoin de s'inscrire à nouveau. \n
- Flexibilité — vous pouvez demander uniquement les données réellement nécessaires (scope). \n
Installation des paquets nécessaires
\nPour travailler avec OAuth dans Node.js, nous utiliserons les bibliothèques suivantes :
\n- \n
express— framework web \n passport— middleware d'authentification \n passport-google-oauth20— stratégie pour Google \n passport-github2— stratégie pour GitHub \n express-session— pour le stockage des sessions \n
Installez-les avec une seule commande :
\nnpm install express passport passport-google-oauth20 passport-github2 express-session\n\nConfiguration de base du serveur
\nCréons un fichier app.js et connectons tous les modules nécessaires :
const express = require('express');\nconst passport = require('passport');\nconst session = require('express-session');\nconst app = express();\n\n// Configuration des sessions\napp.use(session({\n secret: 'votre-clé-secrète',\n resave: false,\n saveUninitialized: true\n}));\n\napp.use(passport.initialize());\napp.use(passport.session());\n\n// Fonctions de sérialisation de l'utilisateur (simulées)\npassport.serializeUser((user, done) => done(null, user));\npassport.deserializeUser((obj, done) => done(null, obj));\n\napp.listen(3000, () => console.log('Serveur démarré sur le port 3000'));\n\nConfiguration de la stratégie OAuth pour Google
\nAvant de commencer, vous devez enregistrer votre application dans la Google Cloud Console et obtenir un Client ID et un Client Secret. Spécifiez dans les paramètres l'URI de redirection : http://localhost:3000/auth/google/callback.
const GoogleStrategy = require('passport-google-oauth20').Strategy;\n\npassport.use(new GoogleStrategy({\n clientID: 'VOTRE_GOOGLE_CLIENT_ID',\n clientSecret: 'VOTRE_GOOGLE_CLIENT_SECRET',\n callbackURL: 'http://localhost:3000/auth/google/callback'\n}, (accessToken, refreshToken, profile, done) => {\n // Ici, vous pouvez enregistrer le profil dans la base de données\n return done(null, profile);\n}));\n\n// Routes pour 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\nConfiguration de la stratégie OAuth pour GitHub
\nPour GitHub, enregistrez une application OAuth dans les Paramètres développeur GitHub. URL de la page d'accueil : http://localhost:3000, URI de rappel d'autorisation
Aussi dans la bibliothèque
Travailler avec S3 et les stockages cloud en Kotlin : AWS SDK et MinIO
OpenCV C++ : guide complet avec exemples et tutoriel
Configuration des applications Kotlin : bibliothèques et approches