Keycloak : Integration LDAP externe

Keycloak : Integration LDAP externe

Table of Content

Introduction

La solution Keycloak est embarqué avec la possibilité de joindre un annuaire LDAP/AD. Il est possible de fédérer plusieurs serveurs d'annuaires au sein d'un même royaume keycloak. Les attributs utilisateurs de l'annuaire LDAP peuvent être mappé dans un model d'utilisateur keycloak. Par défaut, les attributs username, email, first name, last name sont mappés mais d'autres attributs peuvent l'être également.

Cet article fait suite à :

Prérequis

  • Un serveur Keycloak fonctionnel
  • Un serveur OpenLDAP/FusionDirectory fonctionnel

Toute la procédure fera référence aux configuration déployées dans les articles cités en introduction.

Configuration

  • Se rendre sur la WebUI du serveur Keycloak : https://keycloak.example.com

  • Se rendre dans la partie User Federation et ajouter ldap en provider :

Paramétrage - 1ère partie

Stockage

Par défaut, Keycloak importe les utilisateurs de l'annuaire LDAP dans sa base locale d'utilisateurs. Cette copie des utilisateurs peut être synchronisée soit manuellement soit automatiquement toutes les x minutes par exemple. Seul les mots de passes ne sont pas synchronisés. Dans le processus d'identification de l'utilisateur, la validation du mot de passe est délégué au serveur LDAP. L'avantage de cette approche est que toutes les fonctionnalités de Keycloak fonctionneront avec des attributs utilisateurs supplémentaires qui sont stockés localement sur Keycloak. Cela permet également de réduire la charge sur le serveur LDAP.

Il est possible de ne pas importer les utilisateurs de l'annuaire LDAP dans Keycloak en décochant Import Users. Cela aura pour effet d'augmenter les requêtes vers le serveur LDAP car aucune information utilisateur ne sera stockée localement sur Keycloak. L'autre conséquence de ce choix est que si une fonctionnalité de Keycloak repose sur une partie non supporté par l'annuaire LDAP, celle-ci ne fonctionnera pas. En revanche, l'avantage est de ne pas avoir à gérer la synchronisation des comptes.

Edition

L'Edit Mode permet aux utilisateurs et aux administrateurs, à travers leurs consoles respectives sur Keycloak, de modifier les metadas utilisateur.

  • READONLY : Les attributs utilisateurs resteront inchangés. Une erreur apparaitra si une modification d'attribut est faites. Cela est également valable pour la modification d'un mot de passe utilisateur.
  • WRITABLE : Tous les attributs utilisateurs modifiés seront synchronisés automatiquement avec l'annuaire LDAP.
  • UNSYNCED : Tous les changements d'attributs seront stockés localement dans la base de Keycloak. La synchronisation des modifications au sein de Keycloak vers l'annuaire LDAP devra être faites manuellement.

Vendor

Plusieurs choix sont possibles suivant le type d'annuaire LDAP en face :

  • Active Directory
  • Red Hat Directory Server
  • Tivoli
  • Novell eDirectory
  • Other

L'annuaire installé étant OpenLDAP, other est le choix à faire.

Paramétrage - 2nd partie

  • Connection URL : Indiquer le chemin d'accès au serveur LDAP
  • Users DN : Indiquer le chemin d'accès aux utilisateurs dans l'annuaire.
  • Bind DN : Indiquer un compte dans l'annuaire ayant des droits d'écriture.
  • Bind Credential : Le mot de passe du compte spécifié dans "Bind DN".

Synchronisation

Un peu plus bas de la page de configuration de la connexion au serveur LDAP, un menu Sync Settings est disponible :

  • Batch Size : Le nombre de compte utilisateurs qui seront traités en une synchronisation.
  • Periodic Full Sync : La planification en secondes de la synchronisation totale / complète.
  • Periodic Changed Users Sync : La planification en secondes de la synchronisation des changements apportés aux attributs utilisateurs.

Après avoir sauvegarder tous les paramètres, il est possible de déclencher manuellement une première synchronisation des utilisateurs de l'annuaire LDAP dans Keycloak :

Mappers

Par défaut, des Mappers sont mis en place. Un mapper va permettre de mapper un attribut utilisateur de l'annuaire LDAP à un attribut utilisateur de Keycloak :

Dans mes différents essais, en déployant cette solution de SSO avec un OpenLDAP, il est apparu que l'attribut firstName de Keycloak est mappé avec l'attribut cn de l'annuaire LDAP. L'attribut cn dans l'annuaire (avec la couche FusionDirectory) est une concaténation du prénom et du nom de l'utilisateur :

Au lieu de modifier la configuration de l'annuaire LDAP, modifier le mapper first name dans Keycloak :

Modifier LDAP Attribute pour indiquer givenName.

givenName est le nom de l'attribut prénom au sein de l'annuaire LDAP dans notre configuration.

1 commentaire pour l’instant

Keycloak : Federation d’un annuaire LDAPS (Active Directory) – slash-root.fr Publié le15h28 - 23 août 2022

[…] Note : Pour les explications des différents champs, leurs fonctions, leurs utilités, etc… qui vont suivre, se référer à cet article que j'ai écris en 2021 sur l'intégration d'un annuaire LDAP (OpenLDAP, huhu) : https://slash-root.fr/keycloak-integration-ldap-externe/ […]

Les commentaires sont fermés.

Les commentaires sont fermés.