我正计划将全新的OpenLDAP服务器的结构与Moodle集成。
我想到了以下结构:
查看可以在一个或多个项目中分配相同的用户'uid = UserID002'。这将使软件和LDAP之间的同步更容易。
使用OpenLDAP可以做到这一点吗?我听说IBM LDAP允许它,这是真的吗?是否有某种条目的“象征性联系”?
答案 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类,这样我就可以为它添加额外的项目相关属性。但取决于你想获得多么复杂。
然后,您将重新定义您的结构,如下所示......
这将使您的结构更清晰,并且项目项目(例如,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 页面。
无论如何,希望有所帮助......:)