cancel
Showing results for 
Search instead for 
Did you mean: 

Problema al sincronizar grupos y usuarios con LDAP

magarcia_sm
Star Contributor
Star Contributor

Hola a todos,

Estoy teniendo problemas a la hora de sincronizar los grupos y usuarios con LDAP, utilizamos Alfresco 4.2.f.

Cuando reiniciamos alfresco el log nos muestra lo siguiente. Parece que sincroniza pero no me está agregando ningún grupo ni usuario.

Synchronizing users and groups with user registry 'ldap1'

14:27:19,256 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Retrieving all groups from user registry 'ldap1'

14:27:19,272 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Synchronization,Category=directory,id1=ldap1,id2=1 Group Analysis: Commencing batch of 0 entries

14:27:19,273 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Synchronization,Category=directory,id1=ldap1,id2=1 Group Analysis: Completed batch of 0 entries

14:27:19,275 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Retrieving all users from user registry 'ldap1'

14:27:19,278 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Synchronization,Category=directory,id1=ldap1,id2=6 User Creation and Association: Commencing batch of 0 entries

14:27:19,278 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Synchronization,Category=directory,id1=ldap1,id2=6 User Creation and Association: Completed batch of 0 entries

14:27:19,281 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] Finished synchronizing users and groups with user registry 'ldap1'

14:27:19,281 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] 0 user(s) and 0 group(s) processed

14:27:19,359 INFO  [org.alfresco.repo.management.subsystems.ChildApplicationContextFactory] Startup of 'Synchronization' subsystem, ID: [Synchronization, default] complete

Lo primero que hago es crear el archivo de configuración en la siguiente ruta.

tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1/ldap-authentication.properties

### LDAP_1 Config ###

ldap.authentication.allowGuestLogin=false

ldap.authentication.userNameFormat=cn\=%s,ou\=people,dc\=alfresco,dc\=veritas,dc\=sm

ldap.authentication.java.naming.provider.url=ldap://64.664.65.644:389

ldap.authentication.defaultAdministratorUserNames=Administrator,alfresco,admin

ldap.synchronization.java.naming.security.principal=cn=admin,dc=alfresco,dc=veritas,dc=sm

ldap.synchronization.java.naming.security.credentials=admin      

ldap.synchronization.groupSearchBase=cn=CIF_C79999999,ou=groups,dc=alfresco,dc=veritas,dc=sm

ldap.synchronization.userSearchBase=cn=CIF_C79999999,ou=groups,dc=alfresco,dc=veritas,dc=sm

Y indicamos en el archivo alfresco-global.properties el archivo creado anteriormente.

### LDAP Config ###

authentication.chain=ldap1:ldap,alfrescoNtlm1:alfrescoNtlm

¿Alguna idea de que se nos puede estar pasando?

Muchas gracias!!

1 ACCEPTED ANSWER

Creo que no puedes incluir un CN en los "searchBase".

Deberías crear una "ou" intermedia que se llame, por ejemplo, "Alfresco" y colgar debajo los grupos (CN) que quieras que se sincronicen.

Hyland Developer Evangelist

View answer in original post

12 REPLIES 12

angelborroy
Community Manager Community Manager
Community Manager

No encuentra usuarios en el "userSearchBase" que le indicas. Supongo que querrás buscar en algo así como:

ou=groups,dc=alfresco,dc=veritas,dc=sm

Lo mismo pasa para los grupos.

Hyland Developer Evangelist

Gracias por tu rápida respuesta Angel.

Así es, si le pasamos tal y como indicas si que nos sincroniza todos los grupos que tenemos. Pero nuestra intención era que solo se sincronizase un solo grupo que nosotros le indicamos.

ldap.png

ldap.synchronization.userSearchBase=cn=CIF_00000000t,ou=groups,dc=alfresco,dc=veritas,dc=sm

¿Es posible hacer esto o algo parecido, o se tienen que sincronizar todos?

Gracias.

Creo que no puedes incluir un CN en los "searchBase".

Deberías crear una "ou" intermedia que se llame, por ejemplo, "Alfresco" y colgar debajo los grupos (CN) que quieras que se sincronicen.

Hyland Developer Evangelist

Ok, intentaremos modificarlo entonces.

Muchas gracias!

magarcia_sm
Star Contributor
Star Contributor

Aprovecho para hacer otra pregunta relacionada con LDAP.

Ya he conseguido sincronizar los usuarios y grupos, pero solo la primera vez, ya que si ahora borro un grupo o usuario y vuelvo a reiniciar la máquina no vuelve a sincronizar. ¿Existe algún parámetro para indicar que sincronice todo cada vez que se reinicie la máquina?

Prueba a incluir esta propiedad (Synchronization configuration properties | Alfresco Documentation)

synchronization.syncOnStartup=true

Aplica a 4.2, pero por defecto está a "true", así que no debería ser necesario establecerla.

Hyland Developer Evangelist

Gracias Angel, pero me sigue ocurriendo lo mismo, la configuración la tengo como muestro a continuación

### AUTHENTICATION ###

ldap.authentication.active=true

ldap.authentication.allowGuestLogin=false

ldap.authentication.userNameFormat=cn\=%s,ou\=people,dc\=alfresco,dc\=veritas,dc\=sm

ldap.authentication.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory

ldap.authentication.java.naming.provider.url=ldap://64.664.65.666:389

ldap.authentication.java.naming.security.authentication=simple

ldap.authentication.java.naming.security.principal=cn=admin,dc=alfresco,dc=veritas,dc=sm

ldap.authentication.java.naming.security.credentials=contraseña

ldap.authentication.escapeCommasInBind=false

ldap.authentication.escapeCommasInUid=false

ldap.authentication.defaultAdministratorUserNames=Administrator,alfresco,admin

### SYNCHRONIZATION ###

ldap.synchronization.java.naming.security.principal=cn=admin,dc=alfresco,dc=veritas,dc=sm

ldap.synchronization.java.naming.security.credentials=contraseña

ldap.synchronization.userSearchBase=dc=alfresco,dc=veritas,dc=sm

ldap.synchronization.active=true

ldap.synchronization.personQuery=(objectclass\=inetOrgPerson)

ldap.synchronization.personSearchBase=dc\=alfresco,dc\=veritas,dc\=sm

ldap.synchronization.userIdAttributeName=cn

ldap.synchronization.userFirstNameAttributeName=givenName

ldap.synchronization.userLastNameAttributeName=sn

ldap.synchronization.userEmailAttributeName=mail

ldap.synchronization.userOrganizationalIdAttributeName=o

ldap.synchronization.userOrganizationalAttributeName=ou

ldap.synchronization.defaultHomeFolderProvider=userHomesHomeFolderProvider

ldap.synchronization.groupQuery=(objectclass\=groupOfUniqueNames)

ldap.synchronization.groupSearchBase=dc\=alfresco,dc\=veritas,dc\=sm

ldap.synchronization.groupIdAttributeName=cn

ldap.synchronization.groupFirstNameAttributeName=cn

ldap.synchronization.groupType=groupOfUniqueNames

ldap.synchronization.personType=inetOrgPerson

ldap.synchronization.groupMemberAttributeName=uniqueMember

synchronization.synchronizeChangesOnly=false

synchronization.syncOnStartup=true

synchronization.syncWhenMissingPeopleLogIn=true

synchronization.autoCreatePeopleOnLogin=false

Tiene buena pinta.

¿Has lanzado Alfresco con DEBUG de LDAP para verificar qué está haciendo? Al menos debería indicar que está inicializando el subsistema LDAP e incluir algunas líneas con las propiedades. Quizá eso pueda darte alguna pista.

Hyland Developer Evangelist

cesarista
World-Class Innovator
World-Class Innovator

Buenas:

Para ver que es lo que ocurre te recomiendo activar los logs de los subsistemas de sincronizacion LDAP/AD

Pon esto en $ALF_HOME/shared/classes/alfresco/extension/custom-log4j.properties (y reinicia el servicio de Alfresco)

log4j.logger.org.alfresco.repo.security.sync=debug

Con esto deberías obtener más información en los logs de Alfresco sobre la sincronización y además deberías ver recrearse todos tus usuarios puesto que tienes sincronizaciones completas y no diferenciales (synchronization.synchronizeChangesOnly=false)

Por otro lado, cuando borras un usuario debería borrarse de Alfresco si tienes: synchronization.allowDeletions=true (por defecto)

De tu configuración, echo en falta las variables ldap.synchronization.personDifferentialQuery y ldap.synchronization.groupDifferentialQuery en cualquier caso. Si no las tienes en tu archivo de configuración y vas a hacer sincronizaciones completas ponlas iguales a las de personQuery y groupQuery.

Saludos.

--C.