Spring Malformed'成员'属性值

时间:2015-10-27 08:32:59

标签: java spring active-directory ldap

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

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

群组名称为: 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();
    }

这是我的全栈错误:

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)

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:0)

您获得的价值是什么?"会员"属性?有些特殊字符是不允许的。 Allowed LDAP Attribute Characters

答案 2 :(得分:0)

添加属性值时,只需在import stomp import time class SampleListener(object): def on_message(self, headers, msg): print(msg) conn = stomp.Connection([('localhost',61613)]) conn.set_listener('SampleListener', SampleListener()) conn.start() conn.connect() conn.subscribe(destination='queue_name', id=1, ack='auto') time.sleep(10) # secs conn.disconnect() 类型上调用toString()方法即可。像这样:

javax.naming.Name

它将解决这个问题。