Skip navigation

CQ5

Sastry Pola
Currently Being Moderated

LDAP user synchronization using scheduler

Aug 10, 2012 12:38 PM

Tags: #adobe #user #ldap #5.5 #synchronization #cq5.5

hello,

 

Is there any OOTB functionality available to synchronize users from LDAP into CQ5?

 

If not, please help me to proceed in below scenario.

 

I have written a scheduler, which will pull the user details from LDAP and create the user into CQ using UserManager. This process is not creating the user same as system creates when user logs in. I am finding difficulty in setting attribute rep:principalName and process is throwing below given exception.

 

com.wem.ldap.ScheduledPeriodicJob RepositoryException while getting session javax.jcr.nodetype.ConstraintViolationException: Attempt to modify protected property rep:principalName of User 'xxxx'

        at org.apache.jackrabbit.core.security.user.AuthorizableImpl.checkProtec tedProperty(AuthorizableImpl.java:447)

        at org.apache.jackrabbit.core.security.user.AuthorizableImpl.setProperty (AuthorizableImpl.java:174)

        at org.apache.jackrabbit.core.security.user.UserImpl.setProperty(UserImp l.java:38)

        at com.wem.ldap.ScheduledPeriodicJob.run(ScheduledPeriodicJob.java:136)

        at org.apache.sling.commons.scheduler.impl.QuartzJobExecutor.execute(Qua rtzJobExecutor.java:56)

        at org.quartz.core.JobRunShell.run(JobRunShell.java:213)

        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExec utor.java:886)

        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor .java:908)

        at java.lang.Thread.run(Thread.java:662)

 

here is the code I have written

 

resourceResolver = resourceResolverFactory.getAdministrativeResourceResolver(null);

session = resourceResolver.adaptTo(Session.class);

 

JackrabbitSession jackrabbitSession = (JackrabbitSession) session;

 

UserManager manager = jackrabbitSession.getUserManager();

 

user = manager.createUser("xxxx", "xxxxx");

 

value = valueFactory.createValue("xxxx");

user.setProperty("cq:first-name", value);

 

value = valueFactory.createValue("xxxx");

user.setProperty("cq:last-name", value);

 

value = valueFactory.createValue("xxx@xxxx.com");

user.setProperty("rep:e-mail", value);

 

value = valueFactory.createValue("CN=xxxx,OU=Users,DC=company,DC=com");

user.setProperty("rep:principalName", value);

 

jackrabbitSession.save();

 

can you please provide the code block to create user, which needs to get authenticated against ldap password.

 

Thanks,

Sastry

 
Replies

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points