LDAP:修改类的“必须”字段并迁移以前的条目

LDAP:修改类的“必须”字段并迁移以前的条目

我将 LDAP 类中用户的电子邮件设置为‘必须’:

// schema.ldif
objectClasses: ( 2.25.XXXX.3 NAME 'user' SUP inetOrgPerson STRUCTURAL MUST mail MAY ( XXX ) )

我的用户使用 DN 存储在我的 ldap 中:

[email protected],ou=people,dc=company,dc=com

由于不同的原因,我现在想使用 userId 作为 Dn,因此我的模式将如下所示:

// schema.ldif
objectClasses: ( 2.25.XXXX.3 NAME 'user' SUP inetOrgPerson STRUCTURAL MUST (mail, userid) MAY (XXX) )

因此 DN 现在看起来像这样(邮件是必须的,但在 Dn 中未使用):

userid=325448,ou=people,cd=company,dc=com

我该怎么做?是否有将对象类从一个模式迁移到另一个模式的过程?

我可以在我的程序中编写一个迁移过程,以便它迭代所有条目并正确填充该用户 ID,但我在 LDAP 文档中找不到有关此内容的任何信息。

另一个想法是首先将 userId 设为 MAY 字段,然后填充它,然后将其设为 MUST,然后使用modifyDn 更改所有用户的 DN。这样可行吗?

对此有什么意见吗?

如果有帮助,我们将使用 OpenDJ 作为 LDAP 服务器。

答案1

由于架构更改大部分兼容(仅添加约束),因此使用 OpenDJ,您可以通过删除旧值并添加新值来更改 objectclass 定义,方法是使用 ldapmodify(cn=schema)。OpenDJ 服务器将继续返回所有条目,但要求您在进行任何其他更改之前更新没有用户 ID 值的条目。

您可以使用 LDAP ModDN 更改每个条目的 DN 中使用的属性。

LDIF 中的更改将如下所示:

dn: [email protected],ou=people,dc=company,dc=com
changetype: moddn
newdn: userid=325448
deleteoldrdn: false
-

请注意,您不需要停止服务器来进行所有这些更改。

相关内容