我目前正在将 slapd 设置为代理,并面临重写 LDAP 属性的挑战。我知道 DN 的重写模块 (rwm) 功能,但我需要将类似的功能应用于 LDAP 属性。
语境:我们的用户 ID 结构为一个或两个非必要字母的前缀,后跟 8-9 个重要数字。我的目标是删除这些字母,并利用剩余的数字通过 nslcd/sssd 分配 POSIX 用户/组 ID。不幸的是,由于管理员不愿意接受更改,因此无法对原始 LDAP 服务器进行修改。
问题:尽管经过了几天的研究和试验,包括咨询资源和使用 ChatGPT,但我只成功重写了 DN。我想知道是否可以将重写功能用于 DN 以外的属性,如果可以,如何实现这一点。
尝试:
我尝试使用数据库映射和 ldap 以及 rwm 覆盖来操作属性。我的配置仅成功重写了 DN,而没有重写其他属性。
最后一次尝试的示例:
...
moduleload back_ldap
moduleload back_meta
database meta
...
rebind-as-user true
rewriteEngine on
rewriteContext searchResult
rewriteRule "^(uid=[a-zA-Z]*)([0-9]*)(,.*)$" "$1$2$3,posixUID=$2" ":@"
问题:
- 是否可以使用 slapd 中的 rwm 重写 LDAP 属性?
- 如果是,我该如何配置以从用户 ID 属性中去除特定字符并保留数字?
任何指导或示例都将不胜感激。谢谢!
答案1
是否可以使用 slapd 中的 rwm 重写 LDAP 属性?
来自 OpenLDAP 开发人员之一 Howard Chu 的在 2014 年的一条消息中:
slapo-rwm 还会重写 DN 值属性中的 DN。“DN 值”表示属性的语法是 distinguishedName。它不会重写任何其他属性。
很明显,该rwm
模块不会执行您想要的操作。