我正在使用LDAP从我的应用程序连接到AD Server。我成功通过身份验证但是当我搜索用户时,它会在acl_read:instanceType for base中引发LDAP错误代码32的异常。
javax.naming.NameNotFoundException: [LDAP: error code 32 - acl_read: Error retrieving instanceType for base. at ../source4/dsdb/samdb/ldb_modules/acl_read.c:362]
at com.sun.jndi.ldap.LdapCtx.mapErrorCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.processReturnCode(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.searchAux(Unknown Source)
at com.sun.jndi.ldap.LdapCtx.c_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.ComponentDirContext.p_search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at com.sun.jndi.toolkit.ctx.PartialCompositeDirContext.search(Unknown Source)
at javax.naming.directory.InitialDirContext.search(Unknown Source)
我已经验证了baseDN,域名和端口,它们是正确的,我们可以连接到它。
我从日志中获取了查询字符串,并且我在AD浏览器中的自定义搜索中验证了相同的内容。它似乎工作得很好并且回馈结果。
Query from Logs: (&(objectClass=user)(objectCategory=person)(|(|(sAMAccountname=*MSUser1*)(givenName=*MSUser1*)(sn=*MSUser1*))))
不确定这里出了什么问题。有些人可以帮助我找出并解决这个问题。
由于
答案 0 :(得分:0)
问题在于baseDN本身。我们已正确配置LDAP,但代码中的某处有一个属性文件,它覆盖了我们在设置中的baseDN。识别起来非常困难,因为它没有记录在任何地方,我们不得不反编译所有类文件以获取该文件的详细信息。
随着我们修改了TOP_OU和USERS_OU以及DN_PREFIX,它开始拉动所有用户。
TOP_LEVEL_OU_OR_GROUP_DN=DC=awssiladev,DC=mycomp,DC=com
USER_OU_OR_GROUP_DN=CN=Users,DC=awssiladev,DC=mycomp,DC=com
DN_PREFIX=CN=