春季格式错误的“成员”属性值

Tho*_*mas 2 java spring ldap active-directory

我正在创建一个必须连接到活动目录的应用程序。

在处理组成员更新时,我实际上遇到了一个问题。

群组名称是:GG-Collaboration-AgenceXXX

GroupRepository是抛出异常的我的类代码:

 public void addMemberToGroup(String groupName, User user) {
        Name groupDn = this.buildGroupDn(groupName);
        Name userDn = this.buildPersonDn(user.getFirstName() + " " + user.getLastName(), user.getCompany(), user.getCountry().toString());
        DirContextOperations ctx = this.ldapTemplate.lookupContext(groupDn);
        ctx.addAttributeValue("member", userDn);
        System.out.println(userDn);
        this.ldapTemplate.modifyAttributes(ctx);
    }

 private Name buildGroupDn(String groupName) {
        return LdapNameBuilder.newInstance("CN=" + groupName).build();
    }

    private Name buildPersonDn(String fullname, String company, String country) {
        return LdapNameBuilder.newInstance("DC=test,DC=lan").add("OU", "Utilisateurs").add("CN", fullname).build();
    }
Run Code Online (Sandbox Code Playgroud)

这是我的全栈错误:

Malformed 'member' attribute value; nested exception is javax.naming.directory.InvalidAttributeValueException: Malformed 'member' attribute value; remaining name 'CN=GG-Collaboration-AgenceXXX'
    at org.springframework.ldap.support.LdapUtils.convertLdapException(LdapUtils.java:132)
Caused by: javax.naming.directory.InvalidAttributeValueException: Malformed 'member' attribute value
    at com.sun.jndi.ldap.LdapClient.encodeAttribute(LdapClient.java:984)
Run Code Online (Sandbox Code Playgroud)

Jim*_*den 5

“成员”属性仅允许将字符串作为值而不是LDAPName对象。因此userDn,在将其放入属性之前,请将其转换为字符串。