我正在创建一个必须连接到活动目录的应用程序。
在处理更新群组成员时,我实际上遇到了问题。
群组名称为: 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)
答案 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
它将解决这个问题。