OAuth 2.0 et autorisation JWT en JavaScript : guide complet

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

Introduction à OAuth 2.0 et à l'autorisation JWT en JavaScript

Les applications web modernes nécessitent un système d'authentification et d'autorisation fiable. Les deux standards les plus populaires — OAuth 2.0 (protocole d'accès délégué) et JWT (JSON Web Tokens) — sont souvent utilisés ensemble pour créer des API sécurisées. Dans cet article, nous détaillerons comment implémenter OAuth 2.0 et l'autorisation JWT en JavaScript (Node.js) à partir de zéro.

Vous apprendrez :

  • Ce qu'est OAuth 2.0 et pourquoi il est nécessaire
  • Comment fonctionnent les tokens JWT
  • Comment configurer un serveur d'autorisation sur Express
  • Comment protéger les routes à l'aide de middleware


Bases d'OAuth 2.0 : Flux et Rôles

OAuth 2.0 définit quatre rôles : Propriétaire de la ressource (utilisateur), Client (application), Serveur d'autorisation (serveur délivrant les tokens), et Serveur de ressources (serveur fournissant les données). Le flux le plus courant est l'octroi de code d'autorisation, utilisé dans les applications web.

Dans cet article, nous nous concentrerons sur l'implémentation du Serveur de ressources et du Serveur d'autorisation en utilisant JWT, plutôt que des fournisseurs externes (Google, GitHub). Cela vous donnera un contrôle total sur le processus.



Installation des dépendances

Pour commencer, créez un nouveau projet Node.js et installez les packages nécessaires :

npm init -ynpm install express jsonwebtoken bcrypt dotenv cors

Descriptions des packages :

  • express — framework pour créer un serveur
  • jsonwebtoken — création et vérification de JWT
  • bcrypt — hachage de mots de passe
  • dotenv — travail avec les variables d'environnement
  • cors — configuration de CORS pour l'API


Implémentation de l'autorisation JWT dans Node.js

JWT est un token compact composé de trois parties : en-tête, payload et signature. Nous l'utiliserons pour l'authentification des utilisateurs après une connexion réussie.



Configuration du serveur et du modèle utilisateur

Créez un fichier server.js et définissez la structure de base :

require('dotenv').config();const express = require('express');const jwt = require('jsonwebtoken');const bcrypt = require('bcrypt');const cors = require('cors');

const app = express();app.use(express.json());app.use(cors());

const PORT = process.env.PORT || 3000;const JWT_SECRET = process.env.JWT_SECRET || 'your-secret-key';

// Stockage temporaire des utilisateurs (utilisez une base de données en production)const users = [];


Inscription et hachage du mot de passe

Lors de l'inscription, le mot de passe doit être haché à l'aide de bcrypt :

app.post('/api/register', async (req, res) => {    try {        const { email, password } = req.body;                // Vérifier si l'utilisateur existe        const existingUser = users.find(u => u.email === email);        if (existingUser) {            return res.status(400).json({ message: 'User already exists' });        }

// Hacher le mot de passe const hashedPassword = await bcrypt.hash(password, 10); const newUser = { id: users.length + 1, email, password: hashedPassword }; users.push(newUser);

res.status(201).json({ message: 'User created' }); } catch (error) { res.status(500).json({ message: 'Server error' }); }});


Connexion et génération de token JWT

Après avoir vérifié les identifiants, générez un token à l'aide de jsonwebtoken :

app.post('/api/login', async (req, res) => {    try {        const { email, password } = req.body;                // Trouver l'utilisateur        const user = users.find(u => u.email === email);        if (!user) {                

Blogs

Book Recommendations