Jonathan Clarke a ?crit :
> On 24/06/2009 09:56, Cl?ment OUDOT wrote:
>>> Cl?ment OUDOT a ?crit :
>>>>> Yes, the use of employeeNumber as pivot attribute doesn't a good
>>>>> idee...
>>>>>
>>>>>
>>>>> I change it by uid attribute.
>>>>>
>>>>>
>>>>> I have changed too lsc.tasks.salaries.srcService.filterAll to have
>>>>> only
>>>>> entries of zimbra with a valid uid like this :
>>>>>
>>>>>
>>>>> lsc.tasks.salaries.srcService.filterAll =
>>>>> (&(objectClass=organizationalPerson) (uid=*))
>>>>>
>>>>>
>>>>> Now i have a problem when i run :
>>>>>
>>>>> ant lsc::synchronize -Dsynchronize.parameters="-c all -s all"
>>>>>
>>>>> the reponse is :
>>>>>
>>>>> Buildfile: build.xml
>>>>>
>>>>> lsc::init:
>>>>>
>>>>> lsc::prepare-env:
>>>>> [echo] Copying xml and properties files
>>>>> [copy] Copying 1 file to
>>>>> /home/pascal/lsc/lsc-salarie2-z2ldap/target/classes
>>>>>
>>>>> lsc::compile-resources:
>>>>> [echo] Compiling resources
>>>>>
>>>>> lsc::compile-app:
>>>>>
>>>>> lsc::synchronize:
>>>>> [java] 0 [main] WARN
>>>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:230) -
>>>>> Starting sync for salaries
>>>>> [java] 586 [main] ERROR
>>>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:554) - Error
>>>>> while
>>>>> modifying directory on entry
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org /
>>>>> [Add
>>>>> attribute: objectclass: top, shadowAccount, inetOrgPerson, Add
>>>>> attribute: sn: Maurieras, Add attribute: cn: Pascal Maurieras]
>>>>> [java] javax.naming.InvalidNameException:
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44: [LDAP: error code 34 - invalid DN];
>>>>> remaining name 'uid=,ou=Salaries,o=fal44,o=cdr44'
>>>>> [java] at
>>>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2932)
>>>>> [java] at
>>>>> com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2746)
>>>>> [java] at
>>>>> com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:779)
>>>>> [java] at
>>>>> com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
>>>>>
>>>>>
>>>>> [java] at
>>>>> com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
>>>>>
>>>>>
>>>>> [java] at
>>>>> javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:183)
>>>>>
>>>>>
>>>>> [java] at
>>>>> org.lsc.jndi.JndiServices.apply(JndiServices.java:513)
>>>>> [java] at
>>>>> org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:414)
>>>>>
>>>>>
>>>>> [java] at
>>>>> org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:280)
>>>>> [java] at
>>>>> org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:172)
>>>>> [java] at org.lsc.Launcher.run(Launcher.java:128)
>>>>> [java] at org.lsc.Launcher.main(Launcher.java:111)
>>>>> [java] 2213 [main] ERROR
>>>>> org.lsc.AbstractSynchronize.logActionError(AbstractSynchronize.java:475)
>>>>>
>>>>> - Erreur rencontr?e sur l'identifiant
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org:
>>>>> [java]
>>>>> [java] dn:
>>>>> uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org
>>>>> [java] changetype: add
>>>>> [java] objectclass: top
>>>>> [java] objectclass: shadowAccount
>>>>> [java] objectclass: inetOrgPerson
>>>>> [java] sn: Maurieras
>>>>> [java] cn: Pascal Maurieras
>>>>> [java]
>>>>> ...
>>>>>
>>>>>
>>>>> The method srcBean.getAttributeValueById("uid") seems doesn't work in
>>>>> lsc.tasks.salaries.dn ?
>>>>>
>>>>>
>>>>> My new conf is :
>>>>>
>>>>>
>>>>> lsc.tasks.salaries.type = ldap2ldap
>>>>> lsc.tasks.salaries.srcService.pivotAttrs = uid
>>>>> lsc.tasks.salaries.srcService.filterId =
>>>>> (&(objectClass=organizationalPerson)(uid={uid}))
>>>>> lsc.tasks.salaries.srcService.filterAll =
>>>>> (&(objectClass=organizationalPerson) (uid=*))
>>>>> lsc.tasks.salaries.srcService.baseDn = ou=people
>>>>> lsc.tasks.salaries.srcService.attrs = uid cn sn givenName mail
>>>>> objectClass
>>>>> lsc.tasks.salaries.srcService = org.lsc.jndi.SimpleJndiSrcService
>>>>> lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson
>>>>> lsc.tasks.salaries.dstService.pivotAttrs = uid
>>>>> lsc.tasks.salaries.dstService.filterId =
>>>>> (&(objectClass=inetOrgPerson)(uid={uid}))
>>>>> lsc.tasks.salaries.dstService.filterAll = (objectClass=inetOrgPerson)
>>>>> lsc.tasks.salaries.dstService.baseDn = ou=Salaries,o=fal44,o=cdr44
>>>>> lsc.tasks.salaries.dstService.attrs = uid cn sn givenName mail
>>>>> objectClass
>>>>> lsc.tasks.salaries.dstService = org.lsc.jndi.SimpleJndiDstService
>>>>> lsc.tasks.salaries.dn = "uid=" +
>>>>> srcBean.getAttributeValueById("uid") +
>>>>> ",ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org"
>>>>> lsc.tasks.salaries.bean = org.lsc.beans.inetOrgPersonBean
>>>>> lsc.tasks = salaries
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>> Hello,
>>>>
>>>> it seems that srcBean.getAttributeValueById("uid") returns nothing, so
>>>> DN
>>>> cannot be set. Are you sure your entry in source directory has a value
>>>> in
>>>> uid?
>>>>
>>>> Cl?ment.
>>>>
>>>>
>>>>
>>>>
>>> Yes uid has a value. The entrie in source directory of zimbra is :
>>>
>>> dn: uid=pascal.maurieras,ou=people,dc=nordet,dc=org
>>> cn: Pascal Maurieras
>>> displayName: Pascal Maurieras
>>> givenName: Pascal
>>> mail: pascal.maurieras at nordet.org
>>> objectClass: organizationalPerson
>>> objectClass: zimbraAccount
>>> objectClass: amavisAccount
>>> sn: Maurieras
>>> uid: pascal.maurieras
>>> zimbraId: f3b8699c-1fe9-4450-a672-030c91fbfc22
>>> zimbraMailDeliveryAddress: pascal.maurieras at nordet.org
>>> zimbraMailHost: mail.nordet.org
>>> zimbraMailStatus: enabled
>>> zimbraMailTransport: lmtp:mail.nordet.org:7025
>>>
>>
>> Ok I think I see the problem. You source objet is organizationalPerson:
>> lsc.tasks.salaries.object = org.lsc.objects.organizationalPerson
>>
>> But uid may not be defined in this object (it must be an attribute of
>> zimbraAccount objectClass).
>>
>> I think you need to edit the
>> src/impl/java/org/lsc/objects/organizationalPerson.java to add the "uid"
>> attribute.
>>
>> Can someone confirm that?
>
> Indeed, you are absolutely right Cl?ment. The "uid" attribute is not
> allowed in organizationalPerson, but only in inetOrgPerson, as shown
> here:
> http://ldap.akbkhome.com/index.php/attribute/uid.html
>
> This is why LSC is not returning it, since it has no knowledge of uid
> in organizationalPerson.
>
> Captain, you can work around this by setting in your conf:
> lsc.tasks.salaries.object = org.lsc.objects.inetOrgPerson
>
> Jonathan
Thank's for your help.
I tried to change the class
src/impl/java/org/lsc/objects/organizationalPerson.java, i add uid
definition :
/** Multivalued attribute : uid. */
private List uid;
and i add the setter and getter as it describe at
http://lsc-project.org/wiki/documentation/tutorials/openldaptoactivedirectory
:
<http://lsc-project.org/wiki/documentation/tutorials/openldaptoactivedirectory>
/**
* uid getter.
* @return uid values
*/
public final List getUid() {
return uid;
}
/**
* uid setter.
* @param values uid values
*/
public final void setUid(final List values) {
uid = values;
}
It is correct ?
After
ant lsc::compile-app
and
ant lsc::synchronize -Dsynchronize.parameters="-c all -s all"
The result is the same :
Buildfile: build.xml
lsc::init:
lsc::prepare-env:
[echo] Copying xml and properties files
lsc::compile-resources:
[echo] Compiling resources
lsc::compile-app:
lsc::synchronize:
[java] 0 [main] WARN
org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:230) -
Starting sync for salaries
[java] 364 [main] ERROR
org.lsc.jndi.JndiServices.apply(JndiServices.java:554) - Error while
modifying directory on entry
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org / [Add
attribute: objectclass: top, shadowAccount, inetOrgPerson, Add
attribute: sn: Maurieras, Add attribute: cn: Pascal Maurieras]
[java] javax.naming.InvalidNameException:
uid=,ou=Salaries,o=fal44,o=cdr44: [LDAP: error code 34 - invalid DN];
remaining name 'uid=,ou=Salaries,o=fal44,o=cdr44'
[java] at
com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2932)
[java] at
com.sun.jndi.ldap.LdapCtx.processReturnCode(LdapCtx.java:2746)
[java] at
com.sun.jndi.ldap.LdapCtx.c_createSubcontext(LdapCtx.java:779)
[java] at
com.sun.jndi.toolkit.ctx.ComponentDirContext.p_createSubcontext(ComponentDirContext.java:319)
[java] at
com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.createSubcontext(PartialCompositeDirContext.java:248)
[java] at
javax.naming.directory.InitialDirContext.createSubcontext(InitialDirContext.java:183)
[java] at org.lsc.jndi.JndiServices.apply(JndiServices.java:513)
[java] at
org.lsc.AbstractSynchronize.synchronize2Ldap(AbstractSynchronize.java:414)
[java] at
org.lsc.SimpleSynchronize.launchTask(SimpleSynchronize.java:280)
[java] at
org.lsc.SimpleSynchronize.launch(SimpleSynchronize.java:172)
[java] at org.lsc.Launcher.run(Launcher.java:128)
[java] at org.lsc.Launcher.main(Launcher.java:111)
[java] 2561 [main] ERROR
org.lsc.AbstractSynchronize.logActionError(AbstractSynchronize.java:475)
- Erreur rencontr?e sur l'identifiant
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org:
[java]
[java] dn:
uid=,ou=Salaries,o=fal44,o=cdr44,dc=centrederessources44,dc=org
[java] changetype: add
[java] objectclass: top
[java] objectclass: shadowAccount
[java] objectclass: inetOrgPerson
[java] sn: Maurieras
[java] cn: Pascal Maurieras
[java]
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.lsc-project.org/pipermail/lsc-users/attachments/20090624/f71c4e6e/attachment-0001.htm>