Comment utiliser Keycloak avec Node.js
Keycloak est une puissante solution open-source de gestion des identités et des accès qui offre des fonctionnalités de sécurité robustes pour vos applications. L’intégration de Keycloak avec Node.js peut fournir un système d’authentification et d’autorisation sécurisé. Voici un guide pour aider les experts en sécurité à utiliser Keycloak avec Node.js.
Configurer un Realm
Une fois Keycloak installé, vous devez configurer un realm. Un realm est un domaine de sécurité dans lequel résident vos applications et vos utilisateurs. Pour créer un realm, accédez à la console d’administration Keycloak et suivez les étapes ci-dessous :
- Connectez-vous à la console d’administration Keycloak avec les identifiants administrateur.
- Cliquez sur le bouton “Add realm” et donnez un nom à votre realm.
- Configurez les autres paramètres selon vos besoins, tels que la durée de vie des tokens, les politiques de mot de passe, etc.
- Enregistrez la configuration du realm.
Créer un Client
Après avoir configuré le realm, vous devez créer un client pour votre application Node.js. Le client représente votre application au sein du realm Keycloak. Pour créer un client, suivez ces étapes :
- Dans la console d’administration Keycloak, accédez à la section “Clients” de votre realm.
- Cliquez sur le bouton “Create” pour ajouter un nouveau client.
- Donnez un nom à votre client et sélectionnez le protocole client approprié (par exemple, OpenID Connect).
- Configurez les autres paramètres selon les exigences de votre application.
- Enregistrez la configuration du client.
Installer le package express-openid-connect
Pour intégrer Keycloak dans votre application Node.js, vous devez installer le package express-openid-connect. Ouvrez votre terminal et naviguez vers le répertoire de votre projet. Exécutez la commande suivante pour installer le package :
npm install express-openid-connectConfigurer le middleware d’authentification
Dans votre application Node.js, vous devez configurer un middleware d’authentification pour gérer l’authentification des utilisateurs. Importez les modules nécessaires et configurez le middleware Keycloak comme suit :
const express = require('express')const app = express()const { auth } = require('express-openid-connect')
const config = { issuerBaseURL: 'http://localhost:8080/auth/realms/your-realm', clientID: 'your-client-id', baseURL: 'http://localhost:3000', secret: 'your-client-secret',}
app.use(auth(config))Remplacez 'http://localhost:8080/auth/realms/your-realm', 'your-client-id' et 'your-client-secret' par l’URL de votre realm Keycloak, votre identifiant client et votre secret client respectivement.
Protéger les routes
Une fois le middleware d’authentification configuré, vous pouvez protéger des routes spécifiques dans votre application en ajoutant le middleware auth à la définition de la route. Par exemple :
const { requiresAuth } = require('express-openid-connect')
app.get('/protected-route', requiresAuth(), (req, res) => { res.send('This is a protected route')})Cela garantit que seuls les utilisateurs authentifiés peuvent accéder à la route protégée.
Données utilisateur
Pour accéder aux données utilisateur, vous pouvez utiliser l’objet req.oidc.user, qui contient des informations sur l’utilisateur authentifié. Par exemple, pour afficher le nom de l’utilisateur sur une page, vous pouvez utiliser :
app.get('/profile', requiresAuth(), (req, res) => { const { name } = req.oidc.user res.send(`Hello, ${name}!`)})Gérer la déconnexion
Pour gérer la déconnexion des utilisateurs, vous pouvez ajouter une route qui déclenche le processus de déconnexion. Par exemple :
app.get('/logout', (req, res) => { req.logout() res.redirect('/')})Tester l’intégration
À ce stade, votre application Node.js est intégrée avec Keycloak. Vous pouvez maintenant tester l’intégration en accédant à la route protégée définie dans votre application. Lors de l’accès à la route protégée, Keycloak gérera le processus d’authentification et n’accordera l’accès qu’aux utilisateurs authentifiés.
Félicitations ! Vous avez intégré avec succès Keycloak dans votre application Node.js. Vous pouvez désormais exploiter les fonctionnalités de sécurité de Keycloak, telles que le contrôle d’accès basé sur les rôles, l’authentification unique, et bien plus encore, pour renforcer la sécurité de votre application.