LDAP错误代码32

15

我正试图将OpenLDAP和Active Directory进行同步。为此,我正在使用一个名为LSC-Project的程序,该程序专门用于这种类型的操作。

我已经尽力配置了这个程序,但是我找不到解决以下错误的方法:

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

这是程序运行的配置文件:

############################### 
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])
我怀疑这与源配置的任务配置的 baseDn 有关。
操作系统为 Ubuntu 10.04 和 Windows2K3。
有人建议我手动同步它们,但我没有找到任何指南。而且这个程序几乎是唯一一个声称可以免费完成这种工作的东西。
4个回答

10
主要原因为NameNotFoundException是你搜索的对象不存在或者你搜索的容器不正确.

2
不知道为什么会被踩。这是目前为止正确的答案。 - alexander
3
可能是因为它没有给出如何修复它的提示。 - not2savvy

10

1
我这样做了,但是它给出了一个稍微不同的错误: javax.naming.NameNotFoundException: [LDAP: error code 32 - No such Object]; remaining name 'ou=users,dc=domname,dc=com'源为空或不存在。 - Ben_A_135
1
你解决过这个问题吗?我也遇到了同样的问题。请告诉我一声,谢谢。 - subodhbahl
1
@Terry Gardner LDAP:搜索最佳实践链接已经失效,请更新。 - OO7
我解决了类似的问题,将用户作为CN查找,将组作为OU查找。此外,组必须在与用户分开的单独容器中。任何其他组合都会导致所列错误(但实际上功能正常,只是在日志中抛出一堆错误)。 - Brian Knoblauch

4
在Spring-ldap中,当我们在上下文文件(LdapContextSource bean)中指定baseDn,并在createUser代码中构建userDn时,会出现以下错误。我们不需要在buildUserDn()中再次指定dc。
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;
}

3
在Active Directory中:Users目录是container类,而不是组织单位,因此您应该使用:cn=users,dc=domname,dc=com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接