[英]Can not add user to a group with Ldap in Java
我是使用Ldap API for Java的新手,我想將用戶添加到組中,但是我一直都失敗。
我正在使用以下代碼將特定用戶添加到特定組:
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 = roles'
2.我嘗試使用其他屬性(例如“描述”,“公司”)運行modifyAttributes(...),該屬性對“組”和“用戶”均適用,但不適用於“成員”屬性。
3.問題是。 它期望什么名字? DistinguishedName錯誤嗎? 還是將用戶添加到組中的這種方式完全錯誤? 還是我缺少一些細節?
現在我發現了錯誤。
我所需要的只是使用用戶DN的完整地址。 因此,我認為該組的“成員”屬性必須具有完整的地址。 因此,兩個DN現在都看起來像這樣:
encodeGroupDn =“ cn = GROUP_SKL,ou =角色”
encodeUserDn =“ cn = user_dfh,ou =外部,ou =主要,dc = nr,dc =公司,dc =本地”
那行得通!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.