Java [LDAP:错误代码32-0000208D:NameErr:DSID-03100241,问题2001(无对象),数据0,最佳匹配:

Java [LDAP:错误代码32-0000208D:NameErr:DSID-03100241,问题2001(无对象),数据0,最佳匹配:,java,spring,spring-boot,ldap,ldap-query,Java,Spring,Spring Boot,Ldap,Ldap Query,我正在尝试使用SpringBooot将用户添加到Active directory组,使用以下代码 public boolean addMemberToGroup(String groupName, Person p) { boolean status = false; Name groupDn = buildGroupDn(groupName); Name personDn = buildPersonDn(p); try {

我正在尝试使用SpringBooot将用户添加到Active directory组,使用以下代码

public boolean addMemberToGroup(String groupName, Person p) {
        boolean status = false;
        Name groupDn = buildGroupDn(groupName);
        Name personDn = buildPersonDn(p);
        try {
            
            DirContextOperations ctx = ldapTemplate.lookupContext(groupDn);
            ctx.addAttributeValue(UNIQUE_MEMBER, personDn);
            ldapTemplate.modifyAttributes(ctx);
           
        }catch (Exception e) {
           logException
        }
        return status;
    }


private Name buildGroupDn(String groupName) {
        return LdapNameBuilder.newInstance(baseLdapPath)
                .add("OU", "ghtc")
                .add("OU", "IT")
                .add("OU", "Groups")           
                
                .add("CN", groupName)
                .build();
    }
baseLdapPath=DC=emea,DC=testdir,DC=net,并将其添加到application.properties文件中

但当执行ldapTemplate.lookupContext(groupDn);时,会发生以下异常 嵌套异常为javax.naming.NameNotFoundException:[LDAP:错误代码32-0000208D:NameErr:DSID-03100241,问题2001(无对象),数据0,最佳匹配: 'DC=emea,DC=testdir,DC=net' 剩余名称'CN=GroupAMC,OU=Groups,OU=IT,OU=ghtc,DC=emea,DC=testdir,DC=net'

我已验证组的可分辨名称为CN=GroupAMC,OU=Groups,OU=IT,OU=ghtc,DC=emea,DC=testdir,DC=net


我在这里遗漏了什么?

我可以使用下面的链接解决错误

生成groupName时baseDn出现问题。删除baseLdapPath修复了该问题

private Name buildGroupDn(String groupName) {
        return LdapNameBuilder.newInstance()
                .add("OU", "ghtc")
                .add("OU", "IT")
                .add("OU", "Groups")           
                
                .add("CN", groupName)
                .build();
    }

我们看不到此过程中传递的代码,但您确定组名为“对应组的DN,包括groupSearchBase”()我还添加了buildGroupDn代码。这是否与将作用域设置为子树作用域有关。因为当我使用SearchControls搜索时,我可以在将作用域设置为子树作用域时找到该组只是出于好奇,您确定“baseLdapPath”设置为“DC=emea,DC=testdir,DC=net”吗?您可以使用ldapsearch执行相同的搜索吗?是的,我已经验证了。我也可以搜索组。这与访问有关吗?我的LDAP服务器的凭据还没有写访问权限。我认为使用读访问权限,我应该能够执行lookupContext,并且在修改属性时应该会遇到异常,如果您可以使用anon使用ldapsearch进行大量查找,那么应该不会有问题。如果您不能,那么是的,这可能是您的问题。我要求您检查,因为“最佳匹配”位,但我认为它正在正确执行。很高兴您找到了解决方案!