Skip to main content

Fédération des utilisateurs

Le User Federation dans Keycloak permet d'intégrer et d'authentifier des utilisateurs provenant de sources de données externes, comme des bases de données LDAP, des services REST, ou même des bases de données relationnelles. Cela permet à Keycloak d'accéder à des utilisateurs qui existent déjà dans d'autres systèmes sans les dupliquer dans la base de données de Keycloak. Cela permet également de gérer les utilisateurs de manière centralisée.

Voici un aperçu de son fonctionnement et des principales étapes pour configurer une fédération d'utilisateurs dans Keycloak :

1. Concepts de Base

  • User Storage Provider : Un User Storage Provider est une interface dans Keycloak qui permet d'intégrer un magasin externe d'utilisateurs (comme LDAP ou une base de données). Il est responsable de la gestion des utilisateurs, des groupes et des rôles. Vous pouvez utiliser un provider intégré (comme LDAP) ou implémenter votre propre provider personnalisé.
  • User Federation : C'est le processus d'utilisation de ces providers externes pour authentifier des utilisateurs, récupérer leurs informations et, parfois, gérer leurs rôles et leurs groupes.

2. Types de fédération d'utilisateurs

  • LDAP : Keycloak peut se connecter à un serveur LDAP pour importer, synchroniser et authentifier des utilisateurs.
  • Active Directory : Keycloak peut fédérer des utilisateurs provenant de Microsoft Active Directory, qui est un type particulier de LDAP.
  • Base de données personnalisée : Vous pouvez écrire un User Storage Provider pour connecter Keycloak à votre propre base de données d'utilisateurs.
  • Providers externes REST ou autre : Vous pouvez implémenter un provider qui se connecte à des services tiers (par exemple, via des API REST).

3. Comment fonctionne la fédération dans Keycloak

Lorsque vous configurez une source externe pour la fédération d'utilisateurs, voici ce qui se passe dans Keycloak :

  1. Recherche d'utilisateurs :

    • Lorsqu'une demande d'authentification ou de récupération d'utilisateur est faite, Keycloak cherche d'abord dans sa base de données locale (où sont stockés les utilisateurs natifs de Keycloak).
    • Si l'utilisateur n'est pas trouvé localement, Keycloak interroge les sources de fédération configurées, dans l'ordre où elles sont définies.
    • Si un utilisateur est trouvé dans une source de fédération (par exemple, LDAP), il est "fédéré" dans Keycloak et peut être utilisé dans le système sans avoir besoin d'être dupliqué localement.
  2. Authentification :

    • Lorsqu'un utilisateur essaye de se connecter, Keycloak vérifie d'abord dans ses utilisateurs locaux.
    • Si l'utilisateur n'existe pas localement, il passe aux sources de fédération. Si un utilisateur correspondant est trouvé dans une source (par exemple LDAP), Keycloak délègue l'authentification à cette source (par exemple, vérification du mot de passe avec LDAP).
  3. Synchronisation des utilisateurs :

    • Vous pouvez configurer Keycloak pour synchroniser périodiquement les utilisateurs depuis un système externe (comme LDAP) vers Keycloak, ce qui permet d'avoir une copie locale des utilisateurs.
    • Lorsqu'un utilisateur est fédéré, Keycloak peut soit maintenir uniquement une référence à l'utilisateur externe, soit importer certaines informations (comme le nom ou l'email) dans sa base de données interne.
  4. Mise à jour des données utilisateurs :

    • Certains systèmes, comme LDAP, permettent la mise à jour des informations utilisateur directement dans la source fédérée via Keycloak. Par exemple, un administrateur peut changer le mot de passe d’un utilisateur dans LDAP à partir de l'interface Keycloak, si cela est permis par la configuration du provider LDAP.
    • D'autres systèmes peuvent être configurés en mode lecture seule, où Keycloak peut seulement lire les informations mais pas les modifier.

4. Configurer le user federation Open ENT dans Keycloak

Pour configurer une fédération d'utilisateurs d'Open ENT, suivez ces étapes dans l'interface d'administration Keycloak :

  1. Accéder à l'onglet "User Federation" :

    • Allez dans l'interface d'administration Keycloak.
    • Sélectionnez votre realm.
    • Dans le menu de gauche, cliquez sur User Federation.
  2. Configurer un provider Open ENT :

    • Cliquez sur Add Provider et sélectionnez Add user-storage-openent provider.

User provider

  • Remplissez les champs nécessaires comme l'URL du serveur NEO4J et le compte d'accès

Configure user provider

  • Vous pouvez aussi définir si vous voulez que les utilisateurs soient synchronisés ou fédérés à la demande.

  • Sauvegardez votre configuration.

5. Tester la fédération

  • Une fois configuré, vous pouvez tester en créant un utilisateur dans votre système externe (LDAP, base de données, etc.).
  • Essayez ensuite de vous connecter avec cet utilisateur via Keycloak. Si la fédération est correctement configurée, l'authentification réussira et l'utilisateur sera automatiquement disponible dans Keycloak.

Search in user provider