簡體   English   中英

無法使用Java中的Ldap將用戶添加到組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM