我想添加一個groupOfUniqueNames對象的新成員,但我得到一個「ENTRY_ALREADY_EXISTS」錯誤。LDAP - 如何將條目添加到groupOfUniqueNames? (ERR_250_ENTRY_ALREADY_EXISTS)
服務器是ApacheDS中,我的代碼是紅寶石,使用使用net-LDAP:
ldap.add(dn: 'cn=janitors,dc=tidy,dc=example,dc=com',
attributes:
{
:objectclass => "groupOfUniqueNames",
:uniqueMember =>
"uid=broom001,o=users,dc=tidy,dc=example,dc=com"
}
)
中已經有門衛一個成員 - mop99。當我打電話ldap.add,我得到(格式化略有可讀性):
ldap.response: ERR_250_ENTRY_ALREADY_EXISTS cn=janitors,dc=tidy,dc=example,dc=com already exists!
OpenStruct {
:code => 68,
:error_message => "ENTRY_ALREADY_EXISTS: failed for MessageType : ADD_REQUEST
Message ID : 2
Add Request :
Entry
dn[n]: cn=janitors,dc=tidy,dc=example,dc=com
objectclass: groupOfUniqueNames
uniqueMember: uid=mop99,o=users,dc=tidy,dc=example,dc=com
: ERR_250_ENTRY_ALREADY_EXISTS cn=janitors,dc=tidy,dc=example,dc=com already exists!
",
:matched_dn => "",
:message => "Entry Already Exists"
}
我試圖改變ldap.add()來ldap.modify(),但只是替換mop99與broom001,只留下一個看門人。我需要的是add broom001,最終成爲一支不斷增長的門衛隊伍。
我可以從LDAP中讀取現有列表,將新條目附加到Ruby中的列表中,然後將列表寫回到LDAP中......但是這引入了一種競爭狀態,在兩種情況下可能會丟失管理員同時添加。我的看門人太貴了,所以這是不可接受的。
我已經廣泛地搜索了網頁,但沒有發現太多內容,也沒有涉及net-ldap。我找到了https://www.openldap.org/lists/openldap-software/199912/msg00164.html,它描述了一個解決方案WRT .LDIF文件,但我不知道如何將其轉換爲net-ldap。
我錯過了什麼?
就協議而言,ldapadd操作是在目錄中創建一個新條目。如果你想**修改一個屬性的值(即在'uniqueMember'列表中添加一個新值,你必須使用'ldapmodify'操作。我不知道它是如何轉化爲ruby的,但是這是LDAP協議的方式 – Esteban