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

时间:2011-04-06 10:37:58

标签: ldap openldap

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

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

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

4 个答案:

答案 0 :(得分:5)

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

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

所以似乎best way实现这个(并且它不是一个好的方法)是运行一个外部任务,将(ppolicy属性) pwdAccountLockedTime 设置为幻数表示手动锁定的帐户,用户无法解锁。

  

<强> pwdAccountLockedTime

     

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

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:0)

如果用户帐户的类型为shadowAccount,请使用shadowExpire

答案 3 :(得分:-1)

没有详细说明 - 看看上面提到的PPolicy叠加层。有用。你是对的,没有像AD中那样的“帐户过期时间”。

一种解决方案是运行一个脚本来计算帐户的年龄并添加/修改用户属性pwdPolicySubentry,并将其设置为一个策略的DN,该策略使任何1秒钟的密码到期,并且不允许用户使用更改密码。

没有客户可以解决这个问题,但用户输入几乎完好无损。