是否可以在OpenLDAP中的两个不同OU(组织单位)下面分配一个用户(条目)?

时间:2011-07-14 22:14:50

标签: ldap openldap ou

我正计划将全新的OpenLDAP服务器的结构与Moodle集成。

我想到了以下结构:

  • O =公司名称
    • OU =项目名
      • UID = UserID001
      • UID = UserID002
      • UID = UserID003
    • OU =项目名
      • UID = UserID002

查看可以在一个或多个项目中分配相同的用户'uid = UserID002'。这将使软件和LDAP之间的同步更容易。

使用OpenLDAP可以做到这一点吗?我听说IBM LDAP允许它,这是真的吗?是否有某种条目的“象征性联系”?

3 个答案:

答案 0 :(得分:1)

您可以使用LDAP别名轻松地完成此操作,但在这些情况下的一般想法是为项目节点使用organizationalRole等架构。 organizationalRole具有多值roleOccupant 属性,它们是占据角色的条目的DN ...而不是在每个项目下创建整个子上下文林。因此,您只需搜索(roleOccupant={0})每个项目或所有项目,其中{0}作为您要检查的DN提供。

答案 1 :(得分:1)

某些目录服务器支持属性唯一性的概念,甚至还有一个uid唯一性插件。您应该与目录服务器管理员联系,以确定本地目录服务是否支持属性唯一性的概念,如果是,则为uid属性配置属性唯一性。

就命名属性唯一性的一般概念而言,支持LDAP标准组的专业质量目录服务器不应支持您的想法。 uid只是一个属性,在你的例子中没有什么特别的,除了它成为一个相对的可分辨名称组件。标识目录服务器中的条目的对象是可分辨名称,uid是与任何其他属性类似的属性。

根据RFC4512,LDAP确实支持别名的概念,但在您的情况下不应使用该功能。

答案 2 :(得分:1)

您最好使用memberOf叠加层。

使用groupOfNames对象类(已经存在的对象类)使用member属性指定属于项目条目的成员。您可以根据需要添加任意数量的member属性,其中每个成员属性都是(完整)DN。

就个人而言,我会创建自己的objectClass(例如,称为项目)来扩展groupOfNames类,这样我就可以为它添加额外的项目相关属性。但取决于你想获得多么复杂。

然后,您将重新定义您的结构,如下所示......

  • O =公司名称
    • OU =人们
      • uid = UserID001
      • UID = UserID002
      • uid = UserID003
    • OU =项目
      • CN =项目名
      • CN =项目名...

这将使您的结构更清晰,并且项目项目(例如,cn = ProjectName)与您的用户条目分开。项目项目将是您的groupOfNames类,其中包含OU = People类中人员的成员属性(例如member: uid=UserID001,OU=People,O=CompanyName)。

memberOf叠加层将会安装到您的olap中,会在您的ldap搜索结果中添加一个名为member of的附加属性(它是动态生成的)。

这是一个非常常见的叠加层,甚至被AD服务器使用,所以这种方法很常用,你可能发现Moodle会理解它们。

在测试设置时需要注意的一点:ldapsearch查询默认情况下不会显示memberof属性,因此您需要专门询问它。 e.g;

ldapsearch -Y EXTERNAL -H ldapi:/// "(objectClass=groupOfNames)" uid, memberof

当我第一次开始使用它时,那个难倒我。我认为有一个'所有'选项将强制搜索显示隐藏的属性,但不能想到它现在是什么。查看ldapsearch的 man 页面。

无论如何,希望有所帮助......:)