1

我正在计划一个全新的 OpenLDAP 服务器的结构,以将其与 Moodle 集成。

我想到了以下结构:

  • O=公司名称
    • OU=项目名称
      • uid=用户 ID001
      • uid=用户ID002
      • uid=用户 ID003
    • OU=项目名称
      • uid=用户ID002

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

是否可以使用 OpenLDAP 做到这一点?我听说 IBM LDAP 允许,是真的吗?条目是否有任何类型的“符号链接”?

4

3 回答 3

1

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

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

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

于 2011-07-15T10:09:52.547 回答
1

您可以很容易地使用 LDAP 别名来做到这一点,但在这些情况下,一般的想法是使用诸如organizationalRole项目节点之类的模式。organizationalRole具有多值roleOccupant 属性,它们是占据角色的条目的 DN……而不是在每个项目下创建整个子上下文森林。因此,您只需搜索每个项目或所有项目,以查找作为(roleOccupant={0}){0}正在检查的 DN 提供的位置。

于 2011-07-15T00:39:03.533 回答
1

你最好使用memberOf覆盖。

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

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

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

  • O=公司名称
    • OU=人
      • uid=用户 ID001
      • uid=用户ID002
      • uid=用户 ID003
    • OU=项目
      • cn=项目名称
      • cn=项目名称...

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

当安装到您的 olap 中时,memberOf 叠加层将执行的操作将添加一个称为member ofldap 搜索结果的附加属性(它是动态生成的)。

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

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

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

当我第一次开始使用它们时,那​​个让我很难过。我认为有一个“全部”选项会强制搜索显示隐藏的属性,但现在想不出它是什么。查看 ldapsearch 的手册页。

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

于 2015-04-17T10:14:46.070 回答