Apercu
Fess prend en charge l’integration avec les serveurs LDAP (Lightweight Directory Access Protocol), permettant l’authentification et la gestion des utilisateurs dans les environnements d’entreprise.
L’integration LDAP permet :
L’authentification des utilisateurs via Active Directory ou OpenLDAP
Le controle d’acces base sur les groupes
La synchronisation automatique des informations utilisateur
Serveurs LDAP pris en charge
Fess prend en charge l’integration avec les serveurs LDAP suivants :
Microsoft Active Directory
OpenLDAP
389 Directory Server
Apache Directory Server
Autres serveurs compatibles LDAP v3
Prerequis
Acces reseau au serveur LDAP
Compte de service pour les recherches LDAP (Bind DN)
Comprehension de la structure LDAP (Base DN, noms d’attributs, etc.)
Configuration de base
Ajoutez les parametres suivants dans app/WEB-INF/conf/system.properties.
Configuration de connexion LDAP
# Activer l'authentification LDAP
ldap.admin.enabled=true
# URL du serveur LDAP
ldap.provider.url=ldap://ldap.example.com:389
# Pour une connexion securisee (LDAPS)
# ldap.provider.url=ldaps://ldap.example.com:636
# Base DN
ldap.base.dn=dc=example,dc=com
# Bind DN (compte de service)
ldap.security.principal=cn=fess,ou=services,dc=example,dc=com
# Mot de passe de bind
ldap.admin.security.credentials=your_password
Configuration de recherche d’utilisateurs
# Base DN pour la recherche d'utilisateurs
ldap.user.search.base=ou=users,dc=example,dc=com
# Filtre de recherche d'utilisateurs
ldap.user.search.filter=(uid={0})
# Attribut du nom d'utilisateur
ldap.user.name.attribute=uid
Configuration de recherche de groupes
# Base DN pour la recherche de groupes
ldap.group.search.base=ou=groups,dc=example,dc=com
# Filtre de recherche de groupes
ldap.group.search.filter=(member={0})
# Attribut du nom de groupe
ldap.group.name.attribute=cn
Configuration Active Directory
Exemple de configuration pour Microsoft Active Directory.
Configuration de base
ldap.admin.enabled=true
ldap.provider.url=ldap://ad.example.com:389
ldap.base.dn=dc=example,dc=com
# Compte de service (format UPN)
ldap.security.principal=fess@example.com
ldap.admin.security.credentials=your_password
# Recherche d'utilisateurs
ldap.user.search.base=ou=Users,dc=example,dc=com
ldap.user.search.filter=(sAMAccountName={0})
ldap.user.name.attribute=sAMAccountName
# Recherche de groupes
ldap.group.search.base=ou=Groups,dc=example,dc=com
ldap.group.search.filter=(member={0})
ldap.group.name.attribute=cn
Configuration specifique a Active Directory
# Resolution des groupes imbriques
ldap.memberof.enabled=true
# Utiliser l'attribut memberOf
ldap.group.search.filter=(member:1.2.840.113556.1.4.1941:={0})
Configuration OpenLDAP
Exemple de configuration pour OpenLDAP.
ldap.admin.enabled=true
ldap.provider.url=ldap://openldap.example.com:389
ldap.base.dn=dc=example,dc=com
# Compte de service
ldap.security.principal=cn=admin,dc=example,dc=com
ldap.admin.security.credentials=your_password
# Recherche d'utilisateurs
ldap.user.search.base=ou=people,dc=example,dc=com
ldap.user.search.filter=(uid={0})
ldap.user.name.attribute=uid
# Recherche de groupes
ldap.group.search.base=ou=groups,dc=example,dc=com
ldap.group.search.filter=(memberUid={0})
ldap.group.name.attribute=cn
Configuration de securite
LDAPS (SSL/TLS)
Utiliser une connexion chiffree :
# Utiliser LDAPS
ldap.provider.url=ldaps://ldap.example.com:636
# Utiliser StartTLS
ldap.start.tls=true
Pour les certificats auto-signes, importez le certificat dans le truststore Java :
keytool -import -alias ldap-server -keystore $JAVA_HOME/lib/security/cacerts \
-file ldap-server.crt
Protection du mot de passe
Configurer le mot de passe via une variable d’environnement :
ldap.admin.security.credentials=${LDAP_PASSWORD}
Mappage des roles
Vous pouvez mapper les groupes LDAP aux roles de Fess.
Mappage automatique
Les noms de groupes sont utilises directement comme noms de roles :
# Groupe LDAP "fess-users" -> Role Fess "fess-users"
ldap.group.role.mapping.enabled=true
Mappage personnalise
# Mapper les noms de groupes aux roles
ldap.group.role.mapping.Administrators=admin
ldap.group.role.mapping.PowerUsers=editor
ldap.group.role.mapping.Users=guest
Synchronisation des informations utilisateur
Vous pouvez synchroniser les informations utilisateur depuis LDAP vers Fess.
Synchronisation automatique
Synchroniser automatiquement les informations utilisateur lors de la connexion :
ldap.user.sync.enabled=true
Attributs a synchroniser
# Adresse email
ldap.user.email.attribute=mail
# Nom d'affichage
ldap.user.displayname.attribute=displayName
Pool de connexions
Configuration du pool de connexions pour ameliorer les performances :
# Activer le pool de connexions
ldap.connection.pool.enabled=true
# Nombre minimum de connexions
ldap.connection.pool.min=1
# Nombre maximum de connexions
ldap.connection.pool.max=10
# Timeout de connexion (millisecondes)
ldap.connection.timeout=5000
Basculement
Basculement vers plusieurs serveurs LDAP :
# Specifier plusieurs URL separees par des espaces
ldap.provider.url=ldap://ldap1.example.com:389 ldap://ldap2.example.com:389
Depannage
Erreur de connexion
Symptome : Echec de connexion au serveur LDAP
Points a verifier :
Verifier si le serveur LDAP est en cours d’execution
Verifier si le port est ouvert dans le pare-feu (389 ou 636)
Verifier si l’URL est correcte (
ldap://ouldaps://)Verifier si le Bind DN et le mot de passe sont corrects
Erreur d’authentification
Symptome : Echec de l’authentification utilisateur
Points a verifier :
Verifier si le filtre de recherche d’utilisateurs est correct
Verifier si l’utilisateur existe dans le Base DN de recherche
Verifier si l’attribut du nom d’utilisateur est correct
Les groupes ne sont pas recuperes
Symptome : Les groupes de l’utilisateur ne sont pas recuperes
Points a verifier :
Verifier si le filtre de recherche de groupes est correct
Verifier si l’attribut d’appartenance au groupe est correct
Verifier si les groupes existent dans le Base DN de recherche
Configuration de debogage
Afficher des logs detailles :
app/WEB-INF/classes/log4j2.xml :
<Logger name="org.codelibs.fess.ldap" level="DEBUG"/>
Informations de reference
Configuration de la recherche basée sur les rôles - Controle d’acces base sur les roles
Configuration SSO avec Auth Intégrée Windows - Authentification SPNEGO (Kerberos)
Utilisateur - Guide de gestion des utilisateurs