与LDAP相对较新我会陷入所有想要的东西。目前我正在尝试添加用户。常见的示例代码通常有一个create函数和一个buildDn函数,但每个代码中的代码通常非常相似。这就是我所拥有的:
public void create(User u) {
Name dn = buildDn(u);
DirContextAdapter context = new DirContextAdapter(dn);
context.setAttributeValues("objectclass", new String[] {"top", "person"});
context.setAttributeValue("cn", u.getName());
context.setAttributeValue("sAMAccountName", u.getUserName());
_ldapTemplate.bind(context);
}
和buildDn函数:
protected Name buildDn( User u ) {
return LdapNameBuilder.newInstance()
.add("cn", u.getName())
.add("sAMAccountName", u.getUserName())
.build();
}
我尝试添加用户时遇到的错误是500错误,控制台说:
Caused by: org.springframework.ldap.NameNotFoundException:
[LDAP: error code 32 - 0000208D: NameErr: DSID-0310020A, problem 2001 (NO_OBJECT), data 0, best match of:
'OU=**,OU=**,DC=**,DC=**,DC=**'];
nested exception is javax.naming.NameNotFoundException:
[LDAP: error code 32 - 0000208D: NameErr: DSID-0310020A, problem 2001 (NO_OBJECT), data 0, best match of:
'OU=**,OU=**,DC=**,DC=**,DC=**'];
remaining name 'sAMAccountName=**,cn=**'
我用**替换了我的用户特定数据。由于上面提到的两个函数都是添加/设置属性,我不确定哪个是错误的以及为什么。也许我完全错过了这个问题。 TIA
答案 0 :(得分:0)
您需要阅读一些LDAP的基础知识(如果你谷歌的话,很容易找到教程):条目的专有名称(DN)是它的唯一标识符,指定LDAP树中的位置可以找到条目。 LDAP条目上的属性是绑定到条目的数据。
在您的示例中,您需要修改buildDn函数,以在LDAP树中指定要放置LDAP条目的正确位置(相对于配置中指定的基本DN)。根据您要创建的LDAP条目的objectClass,可能还需要其他属性(条目的objectClass定义允许哪些属性以及哪些属性是必需的)