如何在openldap中设置帐户到期日期

Cha*_*ang 3 ldap openldap

我希望在openldap中实施一个新的帐户策略,允许管理员设置用户帐户的到期日期.但是,我在对象类中找不到任何相关属性.

这与pwdMaxAge等密码属性无关.此策略的用法适用于订阅服务.一旦用户订购了服务器一段时间,管理员将设置订阅结束的帐户到期日期.用户在到期日之前进行身份验证,并且在到期日之后将无法进行身份验证.

这有可能在openldap中这样做吗?我google并发现Microsoft的ActiveDirectory具有AccountExpirationDate属性.

Ing*_*upp 5

在OpenLDAP中没有直接支持帐户到期或它的覆盖(甚至没有contrib/).

Howard Chu 建议使用ppolicy的pwdMaxAge,这可以使用,但我发现这不太理想:如果你已经使用ppolicy来过期密码(除了过期帐户),它将与这些设置冲突如果你已经配置了宽限登录(理智的事情),用户可以更改他的密码,从而重置过期计时器.

因此,实现这一点的最佳方式(以及不是这样的好方法)是通过运行外部任务将(ppolicy属性)pwdAccountLockedTime设置为指示手动锁定帐户的幻数,该帐户无法解锁.

pwdAccountLockedTime

此属性包含用户帐户被锁定的时间.如果帐户已被锁定,则可能不再使用密码来验证用户对目录的身份.如果pwdAccountLockedTime设置为000001010000Z,则用户的帐户已被永久锁定,并且只能由管理员解锁.请注意,帐户锁定仅在pwdLockout密码策略属性设置为" TRUE " 时生效.

这个外部任务(最有可能是一个cronjob)可以这样的方式实现,即它在用户记录上循环时从用户记录的自定义属性(例如expirationTime)读取到期日期/时间.这样您就可以将过期时间/日期存储在用户记录中,但当然锁定完全依赖于运行的外部任务.

或者您可以编写自己的叠加层.


use*_*421 2

查看密码策略扩展。从 OpenLDAP 2.3 开始支持它。您可能需要编写一些代码来实现所需的扩展请求/响应控件。

如果您使用 OpenLDAP,则可以使用动态对象覆盖。objectClass=dynamicObject创建帐户时添加,并entryTTL通过动态对象刷新请求设置适当的。