我是使用Ldap API for Java的新用戶,我想將用戶添加到組中,但我一直失敗。無法將用戶添加到Java中具有Ldap的組
我使用這個代碼添加特定用戶的特定組:
private void insertUserToGroup(List<DistinguishedName> memberOf, DistinguishedName newUserDN) {
try
{
// Loop all groups to put the user in.
for(DistinguishedName groupDn : memberOf) {
String encodedGroupDn = groupDn.encode(); // Example: "cn=GROUP_SKL, ou=roles"
String encodedUserDn = newUserDN.encode(); // Example: "cn=user_dfh, ou=external"
// Now. Add user to a group.
ModificationItem member[] = new ModificationItem[1];
member[0] = new ModificationItem(DirContext.ADD_ATTRIBUTE, new BasicAttribute("member", encodedUserDn));
ldapTemplate.modifyAttributes(encodedGroupDn, member);
}
} catch (InvalidAttributeValueException exc) {
throw exc;
} catch (NameAlreadyBoundException exc) {
throw exc;
} catch (NameNotFoundException exc) {
throw exc;
} catch (Exception exc) {
throw exc;
}
}
的輸入參數是組列表和用戶,你可以看到在這個例子中評論的的distinguishedName將如何樣子。
1.而我運行ldapTemplate.modifyAttributes(encodedGroupDn,member)時得到的異常;是:
org.springframework.ldap.NameNotFoundException:[LDAP:錯誤代碼32 - 00000525:NameErr:DSID-031A11CC,問題2001(NO_OBJECT),數據0,的最佳匹配: '' ];
嵌套的異常是javax.naming.NameNotFoundException:[LDAP:錯誤代碼32 - 00000525:NameErr:DSID-031A11CC,2001(NO_OBJECT)的問題,數據0,的最佳匹配: '' ];
剩餘名稱CN = GROUP_SKL,OU =角色'
2.我試圖運行包含 「描述」, 「公司」 和其他屬性的modifyAttributes(...)適用於組和用戶,但不適用於屬性「member」。
3.所以問題是。它期望什麼名字? DistinguishedName是否錯誤?或者是這種方式來添加一個用戶到一個完全錯誤的組?或者是我缺少的一些細節?
'cn = GROUP_SKL,ou = roles'不是完整的DN。您需要將整個DN提供到樹的根目錄。用戶DN也一樣。否則,確保'ldapTemplate'是樹中這些名稱的起始點。 – EJP
我已經配置ldapTemplate這個基地: ou = main,dc = nr,dc = company,dc = local LdapTemplate不應該配置錯誤,因爲我可以創建用戶並更改像「company」等用戶屬性等等。 – Alexander