我目前正在将 LDAP 身份验证集成到系统中,我想根据 LDAP 组限制访问。唯一的方法是通过搜索过滤器,因此我相信我唯一的选择是memberOf
在搜索过滤器中使用属性。据我了解,该memberOf
属性是一个操作属性,服务器可以在member
为服务器上的任何条目创建新属性时为我创建groupOfNames
它。我的主要目标是能够将member
属性添加到现有groupOfNames
条目,并将匹配的memberOf
属性添加到我提供的 DN
我正在使用 OpenLDAP 版本 2.3.9。我知道版本 2.4.31 是最新版本,但它具有 BerkeleyDB 版本依赖性,我无法更新,因此我必须坚持使用版本 2.3.9。
我已经按照 OpenLDAP 指南中描述的方式设置了 OpenLDAP,并且能够启动服务器。现在,我正尝试将memberOf
覆盖添加到配置数据库。我将以下内容添加到slapd.conf:
database config
rootdn "cn=config"
rootpw secret
我创建了一个 ldif 文件memberOf:
dn: cn=module,cn=config
cn: module
objectclass: olcModuleList
objectclass: top
olcmoduleload: memberof.la
olcmodulepath: "path"
dn: olcOverlay={0}memberof,olcDatabase={1}hdb,cn=config
objectClass: olcConfig
objectClass: olcMemberOf
objectClass: olcOverlayConfig
objectClass: top
olcOverlay: memberof
我正在尝试使用命令添加此覆盖:
ldapadd -x -h "host" -p "port -D "cn=config" -f memberOf.ldif -w secret
我收到以下错误:
ldapadd: Internal (implementation specific) error (80)
additional info: <olcModuleLoad> handler exited with 1
我有以下问题:
- 我们可以在低于 2.3 的版本中添加覆盖吗?
我读到我们需要
-y EXTERNAL
在ldapadd
命令中使用我这样做时出现以下错误:
ldapadd: incompatible with authentication choice
有人能告诉我我做错了什么吗?我尝试了很多分散的资源,但都以错误告终oclModuleLoad
。
答案1
据我了解,该属性是一种操作属性,只要为服务器上的任何条目创建
memberOf
新属性,服务器就可以为我创建该属性。member
groupOfNames
如果您按这种方式配置。您尚未完成配置。您需要指定覆盖层将为哪些属性和 objectClasses 维护 memberOf 属性。您将需要类似这样的内容,以适应您自己的需求:
olcMemberOfDangling ignore
olcMemberOfGroupOC groupOfNames
olcMemberOfMemberAD member
olcMemberOfMemberOfAD memberOf
olcMemberOfRefInt TRUE
除了您已经拥有的之外。