当用作代理时,如何重写 slapd 中的 LDAP 属性?

当用作代理时,如何重写 slapd 中的 LDAP 属性?

我目前正在将 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模块不会执行您想要的操作。

相关内容