LDAP 帐户到期脚本帮助

LDAP 帐户到期脚本帮助

我需要找到一种方法来自动通知 LDAP 帐户用户他们的密码何时过期,并强制他们更改密码。我对 LDAP 还不太熟悉。我在 RHEL 5.3 上运行 openldap 2.3.43.el5,我正在尝试寻找解决方案(可能是脚本形式),但我愿意接受其他经过尝试和测试的解决方案。

我的目标是解析、过滤或格式化以下命令中的 LDAP 查询输出(示例)

slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk"

例如,我得到一个显示用户 cn(名称)和来自 LDAP 数据库的用户 pwChangedTime 字段的输出

cn: jbloggs :
pwdChangedTime: 2011078159Z

或者更好的是,都在同一行上

cn: jbloggs :pwdChangedTime: 2011078159Z

这样,我就可以知道用户密码的最后更改时间,然后根据我们的密码策略计算出 LDAP 帐户用户密码的过期时间。实际上,这将使我能够从一份小报告中计算出谁的密码即将过期。我希望在脚本中执行此操作,但不确定如何从 slapcat 命令输出中实现此操作。LDAP
中是否有方法或命令可以列出用户的 cn(名称)和 pwdChanged 时间或其他字段。我是 LDAP 新手,我只熟悉 slapcat 命令,该命令列出了 LDAP 数据库中的所有 LDAP 用户及其各种属性字段。这个 slapcat 输出不易于 grep 和 awk 找到我正在寻找的确切内容。

我还需要确认字段 pwdChangedTime: 是否真实代表该用户上次更改密码的日期。

最后,有没有一种方法可以强制用户更改他们的 LDAP 密码,就像在普通本地 Unix、Linux 帐户上一样。

非常感谢您的帮助。

答案1

OpenLDAP 本身可以扩展覆盖. 看看它的密码策略覆盖

您的 LDAP 用户使用哪种应用程序?

答案2

我认为输出应该像这样(未经测试):

slapcat -b "cn=Manager,dc=berkerly dc=ac dc=uk" | egrep "(cn:|pwdChangedTime)"

这应该输出所有用户的 cn 和 pwdChangedTime。我应该如何做:

1)使用 slapcat 获取用户列表

2) 对于该列表中的每个用户,使用上面的 grep 获取 cn 和 pwdChangedTime。另一个选项是使用 perl,它有一个 LDAP 库。使用这个库从 LDAP 中获取数据非常容易。

3)检查从 pwdChangedTime var 中取出的日期。

我不知道您是否可以强制用户使用 LDAP 更改密码。我认为有一种方法,但不确定。

希望我的帖子有帮助。

附言:抱歉,我无法发布更多代码示例,但我正在上班。

答案3

当然可以转储 LDIF 来确定哪些用户的密码将在何时过期,但这并不可取,而且绝对不可扩展。您建议的方法需要对目录进行全表扫描,然后进行一些文本整理,以将其全部放在一行上,依此类推。

据我所知,OpenLDAP 支持密码已过期和密码过期控件。这些控件在绑定响应中从服务器返回。它们的目的是通知客户端用户密码的状态,因为它与密码策略有关。这些控件在维吉尼亚休斯敦大学

使用这些控件使客户端负责通知用户,并且已经得到 UNIX 登录客户端的支持,例如(尽管 Solaris 客户端已损坏,请参阅此文章)。当您的客户端收到绑定响应并检查是否存在密码过期控件(如果身份验证不成功)和密码过期控件时,客户端就可以采取适当的措施。客户端必须始终检查 LDAP 响应中的控件。

由客户端执行通知具有灵活性、可配置性、动态性和可扩展性,而由服务器执行通知则不具备上述任何一项功能。

还有其他方法可以增强身份验证体验,例如,使用LDAP 断言控制使用过滤器进行检查pwdChangedTime,并使绑定取决于过滤器的成功。

相关内容