Buenos días,
He realizado la sincronización y la integración del LDAP entre Alfresco CE 6 con un AD sobre un Centos7, he modificado el archivo 'alfresco-global.properties' y creado el 'ldap-authentication.properties' en la ruta: '/rutaAlfresco/apache-tomcat/shared/classes/alfresco/extension/subsystems/Authentication/ldap/ldap1/'.
El archivo 'alfresco-global.properties':
# # alfresco-global.properties # authentication.chain=alfinst:alfrescoNtlm,ldap1:ldap-ad ldap.authentication.active=true ldap.authentication.userNameFormat=%s@uno.dos.es ldap.authentication.java.naming.provider.url=ldap://uno.dos.es:389 ldap.authentication.defaultAdministratorUserNames=Administrador ldap.authentication.java.naming.security.authentication=simple ldap.synchronization.active=true ldap.synchronization.java.naming.security.principal=usuario@uno.dos.es ldap.synchronization.java.naming.security.credentials=PasswordUsuario ldap.synchronization.import.cron=0 0/5 * * * ? # synchronisation starts every 5 minutes! ldap.synchronization.userIdAttributeName=sAMAccountName ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail ldap.synchronization.userSearchBase=dc=uno,dc=dos,dc=es ldap.synchronization.groupSearchBase=dc=uno,dc=dos,dc=es ldap.synchronization.personQuery=(&=(ObjectClass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))((WhenChanged<\={0}))) ldap.synchronization.person.differential.query=(&=(ObjectClass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))((WhenChanged<\={0})))
El archivo 'ldap-authentication.properties' replica el global:
# # ldap-authentication.properties # ldap.authentication.active=true ldap.authentication.userNameFormat=%s@uno.dos.es ldap.authentication.java.naming.provider.url=ldap://uno.dos.es:389 ldap.authentication.defaultAdministratorUserNames=Administrador ldap.authentication.java.naming.security.authentication=simple ldap.synchronization.active=true ldap.synchronization.java.naming.security.principal=usuario@uno.dos.es ldap.synchronization.java.naming.security.credentials=PasswordUsuario ldap.synchronization.import.cron=0 0/5 * * * ? # synchronisation starts every 5 minutes! ldap.synchronization.userIdAttributeName=sAMAccountName ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail ldap.synchronization.userSearchBase=dc=uno,dc=dos,dc=es ldap.synchronization.groupSearchBase=dc=uno,dc=dos,dc=es ldap.synchronization.personQuery=(&=(ObjectClass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))((WhenChanged<\={0}))) ldap.synchronization.person.differential.query=(&=(ObjectClass\=user)(userAccountControl\:1.2.840.113556.1.4.803\:\=512)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))((WhenChanged<\={0})))
Por un lado, no he conseguido que el cron funcione para sincronizar cambios cada 5 minutos
ldap.synchronization.import.cron=0 0/5 * * * ?
Y cuando realiza la sincronización a las 00:00 de me dá el siguiente error:
2020-04-03 00:00:00,313 INFO [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Synchronizing users and groups with user registry 'ldap1' 2020-04-03 00:00:00,354 WARN [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Some users and groups previously created by synchronization with this user registry may be removed. 2020-04-03 00:00:00,447 INFO [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Retrieving groups changed since Apr 2, 2020, 5:50:42 PM from user registry 'ldap1' 2020-04-03 00:00:00,558 INFO [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Synchronization,Category=directory,id1=ldap1,id2=1 Group Analysis: Commencing batch of 0 entries 2020-04-03 00:00:00,558 INFO [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Synchronization,Category=directory,id1=ldap1,id2=1 Group Analysis: Completed batch of 0 entries 2020-04-03 00:00:00,791 ERROR [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Synchronization aborted due to error org.alfresco.error.AlfrescoRuntimeException: 03030023 Error during LDAP Search. Reason:Unbalanced parenthesis at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1335) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.getPersonNames(LDAPUserRegistry.java:583) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.processGroups(ChainingUserRegistrySynchronizer.java:1500) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.access$5(ChainingUserRegistrySynchronizer.java:1465) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.syncWithPlugin(ChainingUserRegistrySynchronizer.java:1751) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronizeInternal(ChainingUserRegistrySynchronizer.java:739) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronize(ChainingUserRegistrySynchronizer.java:471) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob$1.doWork(UserRegistrySynchronizerJob.java:53) at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:602) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob.execute(UserRegistrySynchronizerJob.java:49) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) Caused by: javax.naming.directory.InvalidSearchFilterException: Unbalanced parenthesis; remaining name 'dc=uno,dc=dos,dc=es' at java.naming/com.sun.jndi.ldap.Filter.findRightParen(Filter.java:694) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterList(Filter.java:733) at java.naming/com.sun.jndi.ldap.Filter.encodeComplexFilter(Filter.java:657) at java.naming/com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:104) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74) at java.naming/com.sun.jndi.ldap.LdapClient.search(LdapClient.java:541) at java.naming/com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1986) at java.naming/com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1845) at java.naming/com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1770) at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:341) at java.naming/javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1314) ... 11 more 2020-04-03 00:00:00,835 ERROR [security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-8] Synchronization aborted due to error org.alfresco.error.AlfrescoRuntimeException: 03030023 Error during LDAP Search. Reason:Unbalanced parenthesis at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1335) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.getPersonNames(LDAPUserRegistry.java:583) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.processGroups(ChainingUserRegistrySynchronizer.java:1500) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.access$5(ChainingUserRegistrySynchronizer.java:1465) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.syncWithPlugin(ChainingUserRegistrySynchronizer.java:1751) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronizeInternal(ChainingUserRegistrySynchronizer.java:739) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronize(ChainingUserRegistrySynchronizer.java:471) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob$1.doWork(UserRegistrySynchronizerJob.java:53) at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:602) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob.execute(UserRegistrySynchronizerJob.java:49) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) Caused by: javax.naming.directory.InvalidSearchFilterException: Unbalanced parenthesis; remaining name 'dc=uno,dc=dos,dc=es' at java.naming/com.sun.jndi.ldap.Filter.findRightParen(Filter.java:694) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterList(Filter.java:733) at java.naming/com.sun.jndi.ldap.Filter.encodeComplexFilter(Filter.java:657) at java.naming/com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:104) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74) at java.naming/com.sun.jndi.ldap.LdapClient.search(LdapClient.java:541) at java.naming/com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1986) at java.naming/com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1845) at java.naming/com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1770) at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:341) at java.naming/javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1314) ... 11 more 2020-04-03 00:00:00,845 ERROR [quartz.core.JobRunShell] [DefaultScheduler_Worker-8] Job DEFAULT.org.springframework.scheduling.quartz.JobDetailFactoryBean#40c110e2 threw an unhandled Exception: org.alfresco.error.AlfrescoRuntimeException: 03030023 Error during LDAP Search. Reason:Unbalanced parenthesis at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1335) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.getPersonNames(LDAPUserRegistry.java:583) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.processGroups(ChainingUserRegistrySynchronizer.java:1500) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1Analyzer.access$5(ChainingUserRegistrySynchronizer.java:1465) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.syncWithPlugin(ChainingUserRegistrySynchronizer.java:1751) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronizeInternal(ChainingUserRegistrySynchronizer.java:739) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.synchronize(ChainingUserRegistrySynchronizer.java:471) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob$1.doWork(UserRegistrySynchronizerJob.java:53) at org.alfresco.repo.security.authentication.AuthenticationUtil.runAs(AuthenticationUtil.java:602) at org.alfresco.repo.security.sync.UserRegistrySynchronizerJob.execute(UserRegistrySynchronizerJob.java:49) at org.quartz.core.JobRunShell.run(JobRunShell.java:202) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573) Caused by: javax.naming.directory.InvalidSearchFilterException: Unbalanced parenthesis; remaining name 'dc=uno,dc=dos,dc=es' at java.naming/com.sun.jndi.ldap.Filter.findRightParen(Filter.java:694) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterList(Filter.java:733) at java.naming/com.sun.jndi.ldap.Filter.encodeComplexFilter(Filter.java:657) at java.naming/com.sun.jndi.ldap.Filter.encodeFilter(Filter.java:104) at java.naming/com.sun.jndi.ldap.Filter.encodeFilterString(Filter.java:74) at java.naming/com.sun.jndi.ldap.LdapClient.search(LdapClient.java:541) at java.naming/com.sun.jndi.ldap.LdapCtx.doSearch(LdapCtx.java:1986) at java.naming/com.sun.jndi.ldap.LdapCtx.searchAux(LdapCtx.java:1845) at java.naming/com.sun.jndi.ldap.LdapCtx.c_search(LdapCtx.java:1770) at java.naming/com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(ComponentDirContext.java:392) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:358) at java.naming/com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(PartialCompositeDirContext.java:341) at java.naming/javax.naming.directory.InitialDirContext.search(InitialDirContext.java:267) at org.alfresco.repo.security.sync.ldap.LDAPUserRegistry.processQuery(LDAPUserRegistry.java:1314) ... 11 more
Con más detalle de lo que ocurre, el LDAP ya ha sido sincronizado, pero erroneamente, me explico, se han introdicido usuarios deshabilitados, por lo que añadí el filtro:
(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))
Pero no consigo forzar una nueva sincronización para que elimine los usuarios deshabilitados y añada los que si están habilitados.
No se si alguien ha tenido que lidiar con esta situación, agradecería ayuda. Muchas gracias de antemano,
Solved! Go to Solution.
Hola Angel!
He conseguido que funcione la sincronización cada 10 minutos aplicando el siguiente cron
synchronization.import.cron=0 0/10 0-23 ? * MON-SUN
Al final el error si estaba en el trigger de ejecución.
Ahora solo me queda una pregunta que no se si me podrías contestar. Después de integrar el LDAP y sincronizarle, no me cumplimenta el mail de los usuarios,
En la configuración especifico:
ldap.synchronization.userIdAttributeName=sAMAccountName ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail
Pero cuando entro a los usuarios no se ha cumplimentado el correo y tampoco puedo esditar este campo cuando edito desde el el perfil.
Muchas gracias por todo, marco como RESUELTO, y espero que la información le sirva a alguien más
Igual este vídeo puedo ayudarte:
https://www.youtube.com/watch?v=T9NYXn3JMjU
La sincronización debería resolver los problemas generados por la sincronización anterior.
Hola Angel, muchisimas gracias por contestar, te estoy muy agradecida.
He seguido configurando las propiedades y he descubierto que el error que aparece en el catalina.out, es cuando se le aplica la propiedad del cron, es decir, en cuando se descomenta la línea:
synchronization.import.cron=0 0/10 0-23? * * *?
#Cada 10 minutos todos los dias
He probado también con la configuración básica por si acaso podría ser cosa de trigger aplicado, pero sigue el mismo error.
También probé a cambiar la declaración de la etiqueta, pero no funciona (en parte obvio):
ldap.synchronization.import.cron=0 0/10 0-23? * * *?
Dejo la página de ejemplos del trigger para crear la ejecución del cron: http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/crontrigger.html#examples
Conseguí forzar la sincronización y eliminar los usuarios ya creados, añadiendo las líneas a los archivos .properties
synchronization.allowDeletions=true synchronization.syncOnStartup=true
Además ya no tiene en cuenta los usuarios deshabilitados con el siguiente filtro:
ldap.synchronization.personQuery=(&(ObjectClass\=user)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2))) ldap.synchronization.personDifferentialQuery=(&(ObjectClass\=user)(!(userAccountControl\:1.2.840.113556.1.4.803\:\=2)))
Para esta parte, únicamente me queda de resolver la parte del cron, (sin romper nada por el camino).
Una vez mas, muchas gracias por contestar.
He de decir que el video ya le habia visto al poco de meterme en el mundo de Alfresco, tambien he visto el contenido que cuelgas en el blog, y las contestaciones que has dado en el resto de hilos, muchas gracias por tu ayuda.
Si encuentro alguna solución tambien la adjuntare en el hilo por si alguien se encuentra con el mismo problema.
¿Qué error aparece en el log?
Hola Angel!
He conseguido que funcione la sincronización cada 10 minutos aplicando el siguiente cron
synchronization.import.cron=0 0/10 0-23 ? * MON-SUN
Al final el error si estaba en el trigger de ejecución.
Ahora solo me queda una pregunta que no se si me podrías contestar. Después de integrar el LDAP y sincronizarle, no me cumplimenta el mail de los usuarios,
En la configuración especifico:
ldap.synchronization.userIdAttributeName=sAMAccountName ldap.synchronization.userFirstNameAttributeName=givenName ldap.synchronization.userLastNameAttributeName=sn ldap.synchronization.userEmailAttributeName=mail
Pero cuando entro a los usuarios no se ha cumplimentado el correo y tampoco puedo esditar este campo cuando edito desde el el perfil.
Muchas gracias por todo, marco como RESUELTO, y espero que la información le sirva a alguien más
Los campos sincronizados desde LDAP no son editables, por eso no puedes editar el correo electrónico.
Si en el AD el campo "mail" está informado, debería sincronizarlo. Asegúrate de que efectivamente existan valores para ese campo en el AD.
También puedes activar el log de sincronización para ver si genera alguna pista:
log4j.logger.org.alfresco.repo.security.sync=debug
Buenos días Angel,
Una vez mas, muchisimas gracias por tu ayuda, el problema finalmente estaba en el AD,
Muchas gracias.
Discussions about Alfresco Content Services and Alfresco Process Services in Spanish
Related:
By using this site, you are agreeing to allow us to collect and use cookies as outlined in Alfresco’s Cookie Statement and Terms of Use (and you have a legitimate interest in Alfresco and our products, authorizing us to contact you in such methods). If you are not ok with these terms, please do not use this website.