更改其他人的 LDAP 密码所需的最低权限是什么?我正在开发一种允许用户更改密码的工具。由于该工具需要用 PHP 编写,唯一的问题是您不能使用用户帐户来更改密码。为了解决这个问题,我们希望使用只能更改所有其他用户密码的管理员/管理员帐户。
现在的问题是,我们找不到正确的权限来设置,以便允许该帐户更改密码。对我们而言,唯一可行的方法是让他成为域管理员,而这是我们不想要的。那么,使用 PHP 更改他人密码所需的最低权限是什么?
编辑: 更改标题以更好地适应问题。
答案1
Apache 有一个 suexec 模块,它允许以单独的用户身份产生线程,但我不认为这是最简单的解决方案。
相反,为什么不直接以用户身份登录 ldap 服务器,同时使用用户密码和用户新密码呢?您应该能够使用 ldappasswd(或 PHP 等效程序)来执行此操作。
这ldappasswd 的手册页在 Google 上搜索“php ldappasswd”应该能找到您要找的所有内容。
编辑:据我所知,LDAP 服务器只有一个管理用户,即 root_dn,它可以修改所有内容,包括其他用户的密码。不过,我想您没有 root_dn 的登录详细信息,除非您自己管理 ldap 服务器。
答案2
要更改包含密码的属性,打算发出修改请求的连接必须具有具有足够访问权限的授权身份来更改密码,或者使用代理认证机制,在这种情况下访问权限仍然必须足够。
答案3
unicodePwd
关于属性的限制,有一些很好的信息这里。有两种方法可以更改属性:更改操作(在同一个修改操作中需要delete
旧密码然后是新密码)和重置操作(使用操作,并且需要您绑定的用户具有正确的权限)。add
replace
PHP LDAP 模块无法在一个事务中执行多个操作,这有点糟糕。因此,您只能执行重置操作;请记住,通过此方法实现的密码更改接口将允许用户绕过要求他们实际上更改了密码(他们可以将其重置为相同的密码)以及要求他们不使用以前使用过的密码(不检查历史记录执行情况)。
您的管理帐户对用户帐户执行重置操作所需的权限是“重置密码”权限: