Aller au contenu

Keycloak : Authentification et gestion d’accès

Mise à jour :

logo-keycloak

Keycloak, c’est un peu comme un portier numérique pour vos applications. Il s’occupe de l’authentification, de la gestion des utilisateurs et du contrôle d’accès, le tout sans avoir à réécrire une gestion d’identité dans chaque service. Pour un administrateur système, c’est un outil clé : il permet de centraliser les accès, de mettre en place un SSO (Single Sign-On), ou encore d’ajouter facilement une authentification multifacteur.

Un peu d’histoire : d’où vient Keycloak ?

Keycloak a vu le jour chez Red Hat en 2014. À l’époque, beaucoup d’équipes de développement perdaient un temps fou à réimplémenter des systèmes d’authentification maison. C’était souvent mal sécurisé, difficile à maintenir, et incompatible entre les projets. Le besoin d’une solution d’authentification centralisée, extensible et open-source devenait évident.

Red Hat a donc lancé Keycloak pour répondre à cette demande : offrir une plateforme IAM (Identity and Access Management) qui respecte les standards de sécurité et qui soit facile à intégrer dans une architecture existante. Très vite, le projet a gagné en popularité grâce à sa capacité à gérer le SSO, à fédérer des identités depuis des annuaires LDAP ou des fournisseurs externes comme Google ou GitHub, et à proposer un portail d’administration web simple.

À mon avis, l’une des forces de Keycloak est d’avoir été pensé dès le départ pour les environnements complexes et distribués : microservices, containers, cloud. Il a évolué avec les usages, en adoptant très tôt les protocoles comme OpenID Connect et OAuth2, devenus incontournables aujourd’hui.

En 2022, Keycloak a quitté la gouvernance directe de Red Hat pour devenir un projet communautaire plus indépendant, bien qu’il soit encore fortement soutenu par Red Hat et utilisé dans des produits comme Red Hat SSO. Ce passage a aussi marqué un tournant avec la version 17, qui a introduit une nouvelle architecture basée sur Quarkus, pour gagner en performance et en flexibilité.

Aujourd’hui, Keycloak est l’un des piliers de l’authentification open-source. Il alimente des milliers d’environnements professionnels, et sa communauté active contribue à l’évolution rapide du projet. Pour un débutant, connaître son histoire, c’est aussi comprendre pourquoi c’est un choix solide pour gérer les identités de manière fiable.

Les concepts clés de Keycloak

Avant de plonger dans la configuration ou l’intégration de Keycloak, il faut bien comprendre ses concepts de base. Ce sont eux qui structurent tout le fonctionnement de la plateforme. À mon avis, en les maîtrisant, on évite une bonne dose de confusion dès qu’on met les mains dans l’interface d’admin.

  • Realm : un espace d’identités isolé Un realm est une sorte de contenant indépendant dans lequel on définit ses utilisateurs, clients, rôles et configurations. Il permet d’isoler complètement les données : un utilisateur d’un realm ne peut pas se connecter à un autre.

    Par défaut, Keycloak crée un realm maître pour l’administration globale, mais tu peux en créer autant que nécessaire.

    C’est utile, par exemple, si tu veux gérer un environnement de test séparé de la prod, ou héberger plusieurs clients dans une même instance Keycloak.

  • Utilisateur : la base de tout Les utilisateurs sont les entités que Keycloak authentifie. Chaque utilisateur possède des attributs (nom, email…), des rôles, et peut appartenir à des groupes. Keycloak gère aussi l’état des comptes : activé, désactivé, bloqué…

    Il est possible de créer les utilisateurs à la main, via l’API, ou de les importer automatiquement depuis un annuaire LDAP ou un fournisseur d’identité externe.

  • Client : une application protégée Un client représente une application (web, mobile, backend) qui veut utiliser Keycloak pour authentifier ses utilisateurs. Quand tu déclares un client, tu configures :

    • Le type (confidentiel ou public)
    • Les redirections autorisées
    • Les protocoles utilisés (souvent OpenID Connect)

    Exemple : une appli React va être un client public avec un redirect URI vers http://localhost:3000.

  • Rôle : définir des permissions Les rôles sont utilisés pour contrôler les accès dans les applications. Il y a deux types :

    • Rôles de realm : globaux, utilisables dans tout le realm.
    • Rôles de client : spécifiques à une application.
  • Groupe : organiser les utilisateurs Un groupe permet de regrouper des utilisateurs et de leur attribuer des rôles communs. C’est pratique pour gérer des permissions en masse, par exemple par département ou par type d’utilisateur.

    Les groupes peuvent être imbriqués, ce qui permet d’hériter des rôles automatiquement.

  • Fournisseur d’identité (Identity Provider) Keycloak peut aussi déléguer l’authentification à des fournisseurs externes comme :

    • Google
    • GitHub
    • Azure AD
    • Un autre serveur Keycloak

    Cela permet d’activer rapidement le SSO inter-applications ou inter-organisations.

Quelques exemples d’utilisation de Keycloak

Maintenant qu’on a vu les bases, voyons comment Keycloak s’intègre concrètement dans des projets. Ce que j’aime avec cet outil, c’est sa flexibilité : que ce soit pour un site web, une application mobile ou même des APIs, il s’adapte facilement grâce à son support des protocoles standards comme OpenID Connect ou SAML.

  • Authentification unique (SSO) entre plusieurs applications web Imaginons que tu gères un portail client, une console d’administration, et un site e-commerce. Avec Keycloak, tu peux configurer un SSO (Single Sign-On) : un utilisateur se connecte une fois, et peut naviguer d’une appli à l’autre sans se reconnecter.

  • Sécuriser une API REST Tu as une API écrite en Spring Boot ou Node.js ? Keycloak peut sécuriser cette API en ajoutant une couche d’authentification OAuth2. Chaque appel à l’API devra inclure un jeton d’accès (access token) généré par Keycloak, vérifié par ton backend.

  • Intégration avec LDAP pour authentifier les employés Une entreprise qui utilise un annuaire LDAP (ou Active Directory) peut configurer Keycloak pour fédérer les identités. Ainsi, les employés se connectent avec leur compte d’entreprise habituel, et Keycloak synchronise automatiquement les infos.

  • Authentification via des comptes sociaux Tu veux permettre aux utilisateurs de se connecter avec leur compte Google, Facebook ou GitHub ? Keycloak propose cette intégration via ses identity providers. Tu actives le fournisseur, renseignes les clés API, et c’est prêt.

  • Gérer des utilisateurs et permissions pour un SaaS multi-tenant Keycloak permet de créer plusieurs realms : tu peux en utiliser un par client dans un modèle SaaS. Chaque client a son propre espace d’administration, ses utilisateurs, ses rôles… sans interférer avec les autres.

Pour conclure…

Tu l’as vu, Keycloak est un outil puissant et polyvalent pour gérer les identités et sécuriser les accès aux applications. Même sans être expert en sécurité, tu peux très vite le prendre en main, centraliser les connexions, et te concentrer sur ton infrastructure sans réinventer la roue à chaque projet.

À mon avis, c’est l’un des meilleurs alliés pour qui veut implémenter rapidement de l’authentification moderne, extensible et conforme aux standards.

Dans les prochains guides, je détaillerai étape par étape :

  • Comment installer Keycloak (manuellement ou avec Docker)
  • Configurer un realm, un client et un utilisateur
  • Mettre en place un SSO entre plusieurs applications
  • Sécuriser une API REST avec un token JWT
  • Connecter Keycloak à un LDAP ou un fournisseur social comme Google

Et si tu veux aller plus loin, on verra aussi comment personnaliser les écrans de login ou intégrer Keycloak dans une architecture microservices.

À bientôt pour la suite !