web-dev-qa-db-fra.com

Code d'erreur LDAP 32

J'essaie de synchroniser OpenLDAP et Active Directory ensemble. Pour ce faire, j'utilise un programme appelé LSC-Project, conçu pour faire ce genre de chose. 

J'ai configuré le programme le mieux possible, mais je ne trouve pas le moyen de dissiper l'erreur suivante:

javax.naming.NameNotFoundException: [LDAP: error code 32 - 0000208D: NameErr: DSID-
031001CD,
problem 2001 (NO_OBJECT), data 0, best match of:
'DC=domname,DC=com'
]; remaining name 
'uid=user1,ou=Users'

May 09 15:19:25 - ERROR - Error while synchronizing ID uid=user1,ou=Users:
Java.lang.Exception:
Technical problem while applying modifications to directory
dn: uid=user1,ou=Users,dc=domname,dc=com
changetype: add
userPassword: 3+kU2th/WMo/v553A24a3SBw2kU=
objectClass: uid

Voici le fichier de configuration sur lequel le programme est exécuté:

############################### 
Destination LDAP directory #
##############################

dst.Java.naming.provider.url = ldap://192.168.1.3:389/dc=Windows,dc=com  
dst.Java.naming.security.authentication = simple
dst.Java.naming.security.principal = cn=Administrator,cn=Users,dc=Windows,dc=com
dst.Java.naming.security.credentials = 11111
dst.Java.naming.referral = ignore
dst.Java.naming.ldap.derefAliases = never
dst.Java.naming.factory.initial = com.Sun.jndi.ldap.LdapCtxFactory
dst.Java.naming.ldap.version = 3
dst.Java.naming.ldap.pageSize = 1000

#########################
Source LDAP directory 
#########################

src.Java.naming.provider.url = ldap://192.168.1.2:389/dc=Linux,dc=com
src.Java.naming.security.authentication = simple
src.Java.naming.security.principal = uid=root,ou=users,dc=Linux,dc=com
src.Java.naming.security.credentials = 11111
src.Java.naming.referral = ignore
src.Java.naming.ldap.derefAliases = never
src.Java.naming.factory.initial = com.Sun.jndi.ldap.LdapCtxFactory
src.Java.naming.ldap.version = 3

#######################
Tasks configuration 
#######################

lsc.tasks = Administrator
lsc.tasks.Administrator.srcService = org.lsc.jndi.SimpleJndiSrcService
lsc.tasks.Administrator.srcService.baseDn = ou=users
lsc.tasks.Administrator.srcService.filterAll = (&(objectClass=person))
lsc.tasks.Administrator.srcService.pivotAttrs = uid 
lsc.tasks.Administrator.srcService.filterId = (&(objectClass=person)(uid={uid}))
lsc.tasks.Administrator.srcService.attrs = description uid userPassword

lsc.tasks.Administrator.dstService = org.lsc.jndi.SimpleJndiDstService
lsc.tasks.Administrator.dstService.baseDn = cn=Users
lsc.tasks.Administrator.dstService.filterAll = (&(cn=*)(objectClass=organizationalPerson))
lsc.tasks.Administrator.dstService.pivotAttrs = cn, top, person, user, organizationalPerson
lsc.tasks.Administrator.dstService.filterId = (&(objectClass=user) (sAMAccountName={cn}))
lsc.tasks.Administrator.dstService.attrs = description cn userPassword objectClass

lsc.tasks.Administrator.bean = org.lsc.beans.SimpleBean
lsc.tasks.Administrator.dn = "uid=" + srcBean.getAttributeValueById("uid") + ",ou=Users"

dn.real_root = dc=Domname,dc=com

############################# 
Syncoptions configuration 
#############################

lsc.syncoptions.Administrator = org.lsc.beans.syncoptions.PropertiesBasedSyncOptions
lsc.syncoptions.Administrator.default.action = M
lsc.syncoptions.Administrator.objectClass.action = M
lsc.syncoptions.Administrator.objectClass.force_value = srcBean.getAttributeValueById("cn").toUpperCase()
lsc.syncoptions.Administrator.userPassword.default_value = SecurityUtils.hash(SecurityUtils.HASH_SHA1, "defaultPassword")
lsc.syncoptions.Administrator.default.delimiter=;
lsc.syncoptions.Administrator.objectClass.force_value = "top";"user";"person";"organizationalPerson"
lsc.syncoptions.Administrator.userPrincipalName.force_value = srcBean.getAttributeValueById("uid") + "@Domname.com"
lsc.syncoptions.Administrator.userAccountControl.create_value = AD.userAccountControlSet ( "0", [AD.UAC_SET_NORMAL_ACCOUNT])

Je soupçonne que cela a quelque chose à voir avec le baseDn de la configuration de la tâche dans la partie de la configuration source.

Les systèmes d'exploitation sont Ubuntu 10.04 et Windows2K3

Quelqu'un m'a suggéré de faire une synchronisation manuelle entre eux mais je n'ai trouvé aucun guide pour le faire. Et ce programme est à peu près la seule chose qui dit que fait ce genre de travail sans coûts.

7
Ben_A_135

La raison principale pour NameNotFoundException est que l'objet que vous recherchez n'existe pas ou le conteneur dans lequel vous recherchez est non correct .

9
Anil_irocks88

baseDn doit être le nom distinctif de l'objet de base de la recherche, par exemple, ou=users,dc=domname,dc=com.

voir également

7
Terry Gardner

Dans le cas de Spring-ldap, nous obtenions cette erreur lorsque nous spécifions le baseDn dans le fichier de contexte (bean LdapContextSource) ainsi que dans le code createUser pour générer userDn. Nous n'avons pas besoin de spécifier à nouveau le dc dans le buildUserDn()

protected Name buildUserDn(String userName) {
   DistinguishedName dn = new DistinguishedName();

   //only cn is required as the base dn is already specified in context file

   dn.add("cn", userName); 

   return dn;
}
2
Divya S

Dans Active Directory: le catalogue Users est une classe container, et non pas OrganizationalUnit. Vous devez donc utiliser: cn=users,dc=domname,dc=com

0
x0r