Descripcion general
Fess soporta la integracion con servidores LDAP (Lightweight Directory Access Protocol), permitiendo autenticacion y gestion de usuarios en entornos empresariales.
La integracion LDAP permite:
Autenticacion de usuarios con Active Directory u OpenLDAP
Control de acceso basado en grupos
Sincronizacion automatica de informacion de usuarios
Servidores LDAP compatibles
Fess soporta integracion con los siguientes servidores LDAP:
Microsoft Active Directory
OpenLDAP
389 Directory Server
Apache Directory Server
Otros servidores compatibles con LDAP v3
Requisitos previos
Acceso de red al servidor LDAP
Cuenta de servicio para busquedas LDAP (Bind DN)
Comprension de la estructura LDAP (Base DN, nombres de atributos, etc.)
Configuracion basica
Agregue la siguiente configuracion en app/WEB-INF/conf/system.properties.
Configuracion de conexion LDAP
# Habilitar autenticacion LDAP
ldap.admin.enabled=true
# URL del servidor LDAP
ldap.provider.url=ldap://ldap.example.com:389
# Para conexion segura (LDAPS)
# ldap.provider.url=ldaps://ldap.example.com:636
# Base DN
ldap.base.dn=dc=example,dc=com
# Bind DN (cuenta de servicio)
ldap.security.principal=cn=fess,ou=services,dc=example,dc=com
# Contrasena de Bind
ldap.admin.security.credentials=your_password
Configuracion de busqueda de usuarios
# Base DN para busqueda de usuarios
ldap.user.search.base=ou=users,dc=example,dc=com
# Filtro de busqueda de usuarios
ldap.user.search.filter=(uid={0})
# Atributo de nombre de usuario
ldap.user.name.attribute=uid
Configuracion de busqueda de grupos
# Base DN para busqueda de grupos
ldap.group.search.base=ou=groups,dc=example,dc=com
# Filtro de busqueda de grupos
ldap.group.search.filter=(member={0})
# Atributo de nombre de grupo
ldap.group.name.attribute=cn
Configuracion de Active Directory
Ejemplo de configuracion para Microsoft Active Directory.
Configuracion basica
ldap.admin.enabled=true
ldap.provider.url=ldap://ad.example.com:389
ldap.base.dn=dc=example,dc=com
# Cuenta de servicio (formato UPN)
ldap.security.principal=fess@example.com
ldap.admin.security.credentials=your_password
# Busqueda de usuarios
ldap.user.search.base=ou=Users,dc=example,dc=com
ldap.user.search.filter=(sAMAccountName={0})
ldap.user.name.attribute=sAMAccountName
# Busqueda de grupos
ldap.group.search.base=ou=Groups,dc=example,dc=com
ldap.group.search.filter=(member={0})
ldap.group.name.attribute=cn
Configuracion especifica de Active Directory
# Resolucion de grupos anidados
ldap.memberof.enabled=true
# Usar atributo memberOf
ldap.group.search.filter=(member:1.2.840.113556.1.4.1941:={0})
Configuracion de OpenLDAP
Ejemplo de configuracion para OpenLDAP.
ldap.admin.enabled=true
ldap.provider.url=ldap://openldap.example.com:389
ldap.base.dn=dc=example,dc=com
# Cuenta de servicio
ldap.security.principal=cn=admin,dc=example,dc=com
ldap.admin.security.credentials=your_password
# Busqueda de usuarios
ldap.user.search.base=ou=people,dc=example,dc=com
ldap.user.search.filter=(uid={0})
ldap.user.name.attribute=uid
# Busqueda de grupos
ldap.group.search.base=ou=groups,dc=example,dc=com
ldap.group.search.filter=(memberUid={0})
ldap.group.name.attribute=cn
Configuracion de seguridad
LDAPS (SSL/TLS)
Usar conexion cifrada:
# Usar LDAPS
ldap.provider.url=ldaps://ldap.example.com:636
# Usar StartTLS
ldap.start.tls=true
Para certificados autofirmados, importe el certificado en el truststore de Java:
keytool -import -alias ldap-server -keystore $JAVA_HOME/lib/security/cacerts \
-file ldap-server.crt
Proteccion de contrasena
Configurar contrasena con variable de entorno:
ldap.admin.security.credentials=${LDAP_PASSWORD}
Mapeo de roles
Puede mapear grupos LDAP a roles de Fess.
Mapeo automatico
Los nombres de grupo se usan directamente como nombres de rol:
# Grupo LDAP "fess-users" -> Rol Fess "fess-users"
ldap.group.role.mapping.enabled=true
Mapeo personalizado
# Mapear nombre de grupo a rol
ldap.group.role.mapping.Administrators=admin
ldap.group.role.mapping.PowerUsers=editor
ldap.group.role.mapping.Users=guest
Sincronizacion de informacion de usuarios
Puede sincronizar informacion de usuarios de LDAP a Fess.
Sincronizacion automatica
Sincronizar automaticamente informacion de usuario al iniciar sesion:
ldap.user.sync.enabled=true
Atributos a sincronizar
# Direccion de email
ldap.user.email.attribute=mail
# Nombre para mostrar
ldap.user.displayname.attribute=displayName
Pool de conexiones
Configuracion de pool de conexiones para mejorar el rendimiento:
# Habilitar pool de conexiones
ldap.connection.pool.enabled=true
# Numero minimo de conexiones
ldap.connection.pool.min=1
# Numero maximo de conexiones
ldap.connection.pool.max=10
# Timeout de conexion (milisegundos)
ldap.connection.timeout=5000
Failover
Failover a multiples servidores LDAP:
# Especificar multiples URLs separadas por espacios
ldap.provider.url=ldap://ldap1.example.com:389 ldap://ldap2.example.com:389
Solucion de problemas
Error de conexion
Sintoma: Falla la conexion LDAP
Verificaciones:
Si el servidor LDAP esta ejecutandose
Si el puerto esta abierto en el firewall (389 o 636)
Si la URL es correcta (
ldap://oldaps://)Si el Bind DN y la contrasena son correctos
Error de autenticacion
Sintoma: Falla la autenticacion de usuario
Verificaciones:
Si el filtro de busqueda de usuarios es correcto
Si el usuario existe dentro del Base DN de busqueda
Si el atributo de nombre de usuario es correcto
No se obtienen grupos
Sintoma: No se pueden obtener los grupos del usuario
Verificaciones:
Si el filtro de busqueda de grupos es correcto
Si el atributo de membresia de grupo es correcto
Si los grupos existen dentro del Base DN de busqueda
Configuracion de depuracion
Obtener logs detallados:
app/WEB-INF/classes/log4j2.xml:
<Logger name="org.codelibs.fess.ldap" level="DEBUG"/>
Informacion de referencia
Configuración de Búsqueda Basada en Roles - Control de acceso basado en roles
Configuración de SSO con Auth Integrada de Windows - Autenticacion SPNEGO (Kerberos)
Usuario - Guia de gestion de usuarios