2013-04-10 104 views
0

讓我解釋我的問題。活動目錄ldap登錄認證當需要更改密碼

我有一個PHP應用程序使用LDAP連接到Active Directory服務器進行身份驗證。如果我讓用戶在下次登錄時需要更改密碼,在允許密碼更改之前,它不會允許我對其進行身份驗證。我可以檢測到需要更改密碼,但是如果我允許用​​戶更改密碼,那麼我無法確定用戶是否有效,這意味着只需知道用戶的用戶名就可以竊取系統那是密碼過期。

這對我來說似乎是愚蠢的......是有什麼我在想念..

目前我

如果爲已過期或不口令綁定到服務器

檢查

檢查驗證用戶的詳細信息

如果用戶帳戶設置爲在下次登錄時更改密碼,auth失敗但存在密碼更改請求,則返回以上內容。

是否有特定的請求需要發送的順序,所以我可以在密碼更改發送之前授權用戶?

在此先感謝

回答

1

通過標記帳戶Must change password at next login有效沒有密碼驗證所以這並沒有轉化到網上。

更好的選擇是將用戶的pwdLastSet屬性與域策略進行比較,並強制應用程序中的更改不在AD中。

+0

如果是這種情況,那麼我將需要建立一個系統,以像在整個Microsoft操作系統中使用的Windows密碼緩存系統一樣工作。這將允許我檢測密碼是否已被請求更改,然後在用戶輸入新密碼時要求輸入舊密碼。這不會像使用它一樣安全,但是沒有真正的解決方法。 – 2013-04-11 07:25:09

+0

http://blog.webactivedirectory.com/2011/06/09/windows-active-directory-cached-user-credentials/是我上面的評論涉及到的。 – 2013-04-11 07:27:06

+0

我發現這個問題的另一個解決方案,但它似乎不僅僅是一個修補程序的破解。 如果等於0,則強制將'pwdLastSet' var設置爲-1,那麼在將其更改回0之前,您仍然可以對細節進行身份驗證。此方法也可以應用於自然過期的密碼。但在更改之前,它必須記住'pwdLastSet'字段中的前一個值。 – 2013-04-12 07:08:04