2011-04-06 25 views
3

我希望在openldap中實施新的帳戶策略,允許管理員設置用戶帳戶的失效日期。但是,我無法在對象類中找到任何相關屬性。如何在openldap中設置帳戶失效日期

這與密碼屬性如pwdMaxAge沒有任何關係。此政策的用途適用於訂閱服務。一旦用戶訂購了服務器一段時間,管理員將設置訂閱結束時的帳戶到期日期。如果在失效日期之前用戶被認證並且在失效日期之後將無法認證。

在openldap中可以這麼做嗎?我谷歌,發現微軟的ActiveDirectory有AccountExpirationDate屬性。

回答

2

查看密碼策略擴展。它從OpenLDAP 2.3開始支持。您可能需要編寫一些代碼來實現所需的擴展請求/響應控制。

如果您使用的是OpenLDAP,則可以使用動態對象疊加。創建帳戶時添加objectClass=dynamicObject,並通過動態對象刷新請求設置合適的entryTTL

-1

沒有得到詳細的 - 看看上面提到的PPolicy覆蓋。有用。你是對的,沒有像AD那樣的「賬戶到期時間」。

一種解決方案是運行一個腳本來計算帳戶的年齡並添加/修改用戶屬性pwdPolicySubentry並將其設置爲策略的DN,該策略會過期1秒前的任何密碼並且不允許用戶更改密碼。

沒有客戶會解決這個問題,但用戶輸入仍然幾乎完好無損。

+0

不需要這一切。只需將'pwdAccountLockedTime'設置爲密碼策略草案中指定的零值即可。 – EJP 2016-12-05 07:10:28

5

在OpenLDAP或其覆蓋(即使在contrib/中也不存在直接的帳戶到期支持)。

霍華德楚suggests使用ppolicy的pwdMaxAge這一點,它可以進行工作,但我發現這個不太理想:如果您已經使用ppolicy對於到期的口令(除到期賬戶),它會與這些設置發生衝突,並且如果您配置了寬限登錄(理智的做法),用戶可以更改其密碼並重置到期計時器。

所以似乎best way來實現這一點(它不是一個好辦法)是通過運行設置(ppolicy屬性)的外部任務pwdAccountLockedTime到一個神奇的數字,指示手動鎖定帳戶,不能用被用戶解鎖。

pwdAccountLockedTime

此屬性包含用戶的帳戶被鎖定的時間。如果該帳戶已被鎖定,則該密碼可能不再用於向該目錄認證該用戶。如果pwdAccountLockedTime設置爲000001010000Z,用戶的帳戶已被永久鎖定,並且只能由管理員解鎖。請注意,帳戶鎖定僅在密碼策略屬性設置爲「TRUE」時纔會生效。

這個外部的任務(一個cronjob,最有可能的),可以以這樣的方式來實現,它讀取的自定義屬性的到期日期/時間(例如expirationTime)的用戶記錄,因爲它遍歷他們。這樣,您可以將過期時間/日期存儲在用戶記錄中,但鎖定當然完全依賴於此外部任務的運行。

或者你可以編寫自己的覆蓋。

相關問題