我想添加一个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