cancel
Showing results for 
Search instead for 
Did you mean: 

LDAP sync error : Last encoded character..

jleman
Champ in-the-making
Champ in-the-making

Hello ! 

I have a critical error for one of our managed platforms with some LDAP users synchronized to Alfresco.

Here is the callstack : 

13:02:07,027 INFO  [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-2] Synchronization,Category=directory,id1=ldap1,id2=6 User Creation and Association: Completed batch of 3535 entries
​13:02:07,027 ERROR [org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer] [DefaultScheduler_Worker-2] Synchronization,Category=directory,id1=ldap1,id2=6 User Creation and Association: 5 error(s) detected. Last error from entry "uid=xxx,ou=People,dc=yyy,dc=fr" java.lang.IllegalArgumentException: Last encoded character (before the paddings if any) is a valid base 64 alphabet but not a possible value at org.apache.commons.codec.binary.Base64.validateCharacter(Base64.java:798) at org.apache.commons.codec.binary.Base64.decode(Base64.java:472) at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:412) at org.apache.commons.codec.binary.BaseNCodec.decode(BaseNCodec.java:395) at org.apache.commons.codec.binary.Base64.decodeBase64(Base64.java:694) at org.alfresco.repo.virtual.ref.Reference.fromNodeRef(Reference.java:133) at org.alfresco.repo.virtual.bundle.VirtualNodeServiceExtension.materializeAssocQName(VirtualNodeServiceExtension.java:386) at org.alfresco.repo.virtual.bundle.VirtualNodeServiceExtension.createNode(VirtualNodeServiceExtension.java:362) at jdk.internal.reflect.GeneratedMethodAccessor572.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.alfresco.traitextender.SingletonExtensionFactory$TraiSingletontHandler.invoke(SingletonExtensionFactory.java:74) at com.sun.proxy.$Proxy222.createNode(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor578.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.alfresco.traitextender.AJExtender.extendAroundAdvice(AJExtender.java:654) at org.alfresco.traitextender.RouteExtensions.ajc$inlineAccessMethod$org_alfresco_traitextender_RouteExtensions$org_alfresco_traitextender_AJExtender$extendAroundAdvice(RouteExtensions.java:1) at org.alfresco.traitextender.RouteExtensions.intercept(RouteExtensions.java:85) at org.alfresco.repo.node.db.DbNodeServiceImpl.createNode(DbNodeServiceImpl.java:342) at jdk.internal.reflect.GeneratedMethodAccessor572.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.alfresco.repo.lock.mem.LockableAspectInterceptor.invoke(LockableAspectInterceptor.java:244) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy39.createNode(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor572.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:198) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.alfresco.repo.tenant.MultiTNodeServiceInterceptor.invoke(MultiTNodeServiceInterceptor.java:111) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy39.createNode(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor572.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.alfresco.repo.service.StoreRedirectorProxyFactory$RedirectorInvocationHandler.invoke(StoreRedirectorProxyFactory.java:231) at com.sun.proxy.$Proxy60.createNode(Unknown Source) at org.alfresco.repo.node.MLPropertyInterceptor.invoke(MLPropertyInterceptor.java:284) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.alfresco.repo.node.NodeRefPropertyMethodInterceptor.invoke(NodeRefPropertyMethodInterceptor.java:190) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:212) at com.sun.proxy.$Proxy39.createNode(Unknown Source) at jdk.internal.reflect.GeneratedMethodAccessor572.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:566) at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:343) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:205) at com.sun.proxy.$Proxy39.createNode(Unknown Source) at org.alfresco.repo.security.person.PersonServiceImpl.createPerson(PersonServiceImpl.java:1009) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1PersonWorker.process(ChainingUserRegistrySynchronizer.java:1850) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer$1PersonWorker.process(ChainingUserRegistrySynchronizer.java:1) at org.alfresco.repo.batch.BatchProcessor$TxnCallback.execute(BatchProcessor.java:723) at org.alfresco.repo.transaction.RetryingTransactionHelper.doInTransaction(RetryingTransactionHelper.java:450) at org.alfresco.repo.batch.BatchProcessor$TxnCallback.run(BatchProcessor.java:767) at org.alfresco.repo.batch.BatchProcessor.process(BatchProcessor.java:408) at org.alfresco.repo.security.sync.ChainingUserRegistrySynchronizer.syncWithPlugin(ChainingUserRegistrySynchronizer.java:1923) 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)

I found nothing about this issue except this topic : https://hub.alfresco.com/t5/alfresco-content-services-forum/it-s-impossible-to-show-users-list/td-p/... but it don't seems to be related.

What we tried is : 

  • Search for related issues
  • Delete / recreate the LDAP entry manually (to check that there is no blank space in the fields or sth)
  • Set Alfresco in full sync mode and restart

Do you know anything about this issue ? This is blocking the LDAP synchronization of a French university for a few days now..

We are currently running in Alfresco 6.2 and we know it will be deprecated the next month, update is planned but can't be done as fast as we want in production environments, we are more looking for a fast fix here

Thank you a lot for your help !

1 REPLY 1

cesarista
World-Class Innovator
World-Class Innovator

Hi:

Try to put DEBUG mode for ldap for getting more info about the problems of the sync (with the help of Alfresco Support Tools) or custom-log4j.properties

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

But probably, you will need to change / fix an ldap user in OpenLDAP/AD (which is not an Alfresco part).

Regards.

--C.