• 1. sécuriser une API Node.js avec OAuth2, JWT et Keycloak

  • 2. mise en place de keycloak avec docker

  • 3. configuration du realm et du client OAuth2

  • 4. integration dans une application node.js

  • 5. gestion des jwt et vérification des tokens

  • 6. bonnes pratiques de sécurité

  • 7. conclusion

sécuriser une api node.js avec oauth2 jwt et keycloak

Image de sécuriser une api node.js avec oauth2 jwt et keycloak

sécuriser une API Node.js avec OAuth2, JWT et Keycloak

Dans un contexte où 43 % des failles applicatives sont liées à une authentification mal configurée (source : OWASP Top 10 2023), maîtriser OAuth2 et JWT est essentiel. Ce guide détaille l’installation de Keycloak 20.0.1 via Docker, la configuration d’un realm et l’intégration dans une API Node.js.

1. mise en place de keycloak avec docker

# Tirer l’image officielle et lancer en mode développement  
docker run --name keycloak -p 8080:8080 \  
  -e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=admin \  
  quay.io/keycloak/keycloak:20.0.1 start-dev  

En moins de 30 s, Keycloak est accessible sur http://localhost:8080. Vérifiez la version via l’UI ou docker logs keycloak.

2. configuration du realm et du client OAuth2

  1. Connectez-vous avec admin/admin.
  2. Créez un Realm (ex. api-realm).
  3. Dans « Clients », ajoutez un client (api-client) de type openid-connect.
  4. Définissez « Access Type » sur confidential et notez le Secret.
  5. Activez PKCE et définissez les URLs de redirection (ex. http://localhost:3000/*).

3. integration dans une application node.js

const express = require('express');  
const session = require('express-session');  
const Keycloak = require('keycloak-connect');  
  
const app = express();  
const memoryStore = new session.MemoryStore();  
app.use(session({ secret: 'monSecret', resave: false, saveUninitialized: true, store: memoryStore }));  

const keycloak = new Keycloak({ store: memoryStore }, {  
  clientId: 'api-client',  
  bearerOnly: true,  
  serverUrl: 'http://localhost:8080/auth',  
  realm: 'api-realm',  
  credentials: { secret: 'VOTRE_SECRET' }  
});  

app.use(keycloak.middleware());  

app.get('/protected', keycloak.protect(), (req, res) => {  
  res.json({ message: 'Accès autorisé', user: req.kauth.grant.access_token.content });  
});  
  
app.listen(3000, () => console.log('API sécurisée sur port 3000'));  

Ce code protège la route /protected et expose le contenu du token JWT.

4. gestion des jwt et vérification des tokens

  • Les tokens JWT sont signés en RS256 par défaut.
  • Récupérez les clés publiques via http://localhost:8080/auth/realms/api-realm/protocol/openid-connect/certs.
  • Validez la signature, l’issuer et l’audience dans votre code si vous utilisez jsonwebtoken.
const jwt = require('jsonwebtoken');  
const publicKey = fs.readFileSync('./realm-public.pem');  

function verifyToken(token) {  
  return jwt.verify(token, publicKey, { algorithms: ['RS256'], issuer: 'http://localhost:8080/auth/realms/api-realm' });  
}  

5. bonnes pratiques de sécurité

  • Rotation des clés : automatisez via l’API Admin de Keycloak (v20+).
  • Scopes et rôles minimaux : n’accordez que les permissions nécessaires.
  • Limitation des tentatives : évitez le brute force en configurant les Brute Force Detection dans Keycloak.
  • Surveillance : intégrez vos logs dans une solution dédiée (ex. ELK) pour détecter toute activité anormale.
  • Référez-vous au guide Novane Application Web pour un audit complet.

6. conclusion

En suivant ces étapes, votre API Node.js bénéficie d’une authentification robuste basée sur OAuth2 et JWT. Vous réduisez les risques liés aux sessions compromises et vous vous conformez aux recommandations OWASP. Pour aller plus loin, découvrez nos services d’augmentation d’équipe technique et sécurisez vos projets dès aujourd’hui.

Besoin d’un audit de sécurité ou d’une intégration sur mesure ? Contactez notre équipe.

Image de les 10 outils d'intelligence artificielle pour booster votre marketing en 2025

les 10 outils d'intelligence artificielle pour booster votre marketing en 2025

Découvrez 10 outils d’IA pour booster votre marketing en 2025, de la génération de contenus à l’automatisation des campagnes et l’analyse des performances
Image de terraform 1.10 : nouveautés et meilleures pratiques pour votre infrastructure as code

terraform 1.10 : nouveautés et meilleures pratiques pour votre infrastructure as code

Découvrez Terraform 1.10 : nouveautés et meilleures pratiques IaC pour optimiser vos pipelines multi-cloud, renforcer la fiabilité de votre infrastructure.
Image de comment un chatbot intelligent dans votre logiciel de relation client améliore l’expérience client et booste vos ventes

comment un chatbot intelligent dans votre logiciel de relation client améliore l’expérience client et booste vos ventes

Découvrez comment un chatbot intelligent intégré à votre CRM accélère les réponses, personnalise l’expérience client et booste vos ventes
DEVIS GRATUIT

Un projet en tête ? Vous avez des questions ?

Contactez nous pour recevoir un devis gratuitement, des réponses à vos questions ou une séance de consulting offerte avec l'un de nos experts :

Nous contacter