我目前正在将LDAP身份验证集成到系统中,我想限制基于LDAP组的访问。唯一的方法是通过搜索过滤器,因此我相信我唯一的选择是在搜索过滤器中使用“ memberOf”属性。据我了解,“ memberOf”属性是一个可操作的属性,只要为服务器上的任何“ groupOfNames”条目创建新的“ member”属性,服务器就可以为我创建。我的主要目标是能够向现有的“ groupOfNames”条目添加“成员”属性,并将匹配的“ memberOf”属性添加到我提供的DN中。
到目前为止,我已经实现了以下目标:
我对LDAP管理还很陌生,但是根据我在openldap管理指南中找到的内容,看起来反向组成员资格维护(又称为“ memberof overlay”)将完全达到我想要的效果。
我的服务器当前正在运行openldap 2.4.15的软件包安装(在ubuntu上扩展),该软件包使用“ cn = config”样式的运行时配置。我发现的大多数示例仍引用旧的静态配置“ slapd.conf”方法,并且我已尽力使配置适应新的基于目录的模型。
我添加了以下条目以启用memberof覆盖模块:
使用olcModuleLoad启用模块
cn=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
olcModuleLoad: {1}memberof.la
structuralObjectClass: olcModuleList
entryUUID: a410ce98-3fdf-102e-82cf-59ccb6b4d60d
creatorsName: cn=config
createTimestamp: 20090927183056Z
entryCSN: 20091009174548.503911Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009174548Z
为数据库启用覆盖并允许其使用其默认设置(groupOfNames,member,memberOf等)
cn=config/olcDatabase={1}hdb/olcOverlay\=\{0\}memberof
dn: olcOverlay={0}memberof
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: olcConfig
objectClass: top
olcOverlay: {0}memberof
structuralObjectClass: olcMemberOf
entryUUID: 6d599084-490c-102e-80f6-f1a5d50be388
creatorsName: cn=admin,cn=config
createTimestamp: 20091009104412Z
olcMemberOfRefInt: TRUE
entryCSN: 20091009173500.139380Z#000000#000#000000
modifiersName: cn=admin,cn=config
modifyTimestamp: 20091009173500Z
我目前的结果:
通过使用上述配置,我可以添加具有任意数量的“成员”条目的新“ groupOfNames”,并使用“ memberOf”属性更新所有涉及的DN。这是我期望的行为的一部分。尽管我相信使用memberof overlay应该可以完成以下工作,但我仍然不知道如何执行以下工作,我很乐意欢迎您提出任何建议:
- 向现有的“ groupOfNames”添加“成员”属性,并自动创建相应的“ memberOf”属性。
- 删除“成员”属性,并自动删除相应的“ memberOf”属性。
slapadd
(在停止数据库),这样做的正确方法?