我目前正在将 LDAP 身份验证集成到系统中,我想限制基于 LDAP 组的访问。做到这一点的唯一方法是通过搜索过滤器,因此我相信我唯一的选择是在我的搜索过滤器中使用“memberOf”属性。我的理解是“memberOf”属性是一个操作属性,可以由服务器为我创建任何时候为服务器上的任何“groupOfNames”条目创建新的“成员”属性。我的主要目标是能够将“成员”属性添加到现有的“groupOfNames”条目,并将匹配的“memberOf”属性添加到我提供的 DN。
到目前为止我已经成功实现了:
我对 LDAP 管理还是很陌生,但根据我在 openldap 管理员指南中的发现,反向组成员身份维护(也称为“成员覆盖”)似乎可以达到我正在寻找的效果。
我的服务器当前正在运行 openldap 2.4.15 的软件包安装(在 ubuntu 上为 slapd),它使用“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
Run Code Online (Sandbox Code Playgroud)
为数据库启用覆盖并允许它使用它的默认设置(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: …
Run Code Online (Sandbox Code Playgroud)