2012-02-21 31 views
0

我有一些問題,爲ldap密碼過期策略獲取更具體的錯誤編號。實際上,即使密碼錯誤或密碼過期並且需要更改,我收到的也是錯誤號49。Php和openldap獲取過期密碼的更具體的錯誤代碼

我正在使用openldap服務器和php ldap函數。 (ldap_bind,ldap_error和ldap_errno)

我也試圖通過使用ldap_get_option($ connect,0x0032,$ extended_error)獲得一些額外的信息,但沒有成功。

是否有任何配置,我必須在我的ldap服務器做,所以它會返回一個更具體的錯誤號或方法來獲取無效憑據錯誤的原因?

謝謝。

回答

0

您只需使用擴展的modify-password操作,並處理擴展的響應。

+0

請問您能更精確一點嗎?如何擴展修改密碼操作以便能夠接收針對不同無效憑據消息的更具體的錯誤代碼。一個示例PHP代碼將不勝感激。 – 2012-02-23 13:08:47

+0

@MohoraBogdan你不必擴展它,你只需要使用它。如何在PHP中做到這一點是另一個問題。 – EJP 2012-02-24 08:55:27

+0

我查看了openldap源代碼並設法用擴展錯誤響應重新編譯它們。它看起來像這種情況下的回覆默認情況下不會返回。然後,從PHP我使用ldap_get_option($ conn,$ const,$ ext_err),其中$ const = 0x0032。通過這種方式,我設法考慮了用戶身份驗證中的不同情況。 – 2012-03-06 15:32:22

0

使用密碼策略疊加,您可以將其配置爲發回鎖定錯誤代碼。請參閱http://www.zytrax.com/books/ldap/ch6/ppolicy.html ppolicy_use_lockout鎖定選項。你可以實現的另一個不錯的功能是密碼過期警告和寬限登錄。到期警告實施起來有點棘手。它基本上涉及讀取從綁定請求返回的響應控件。如果你想在Windows上執行它,你需要確保php ldap模塊鏈接到一個openldap客戶端庫而不是winldap32.dll。我不太瞭解有關PHP說它是或不是。只需說winldap庫已經夠用了,除了Active Directory以外,任何其他工具都只能用於基礎,並且永遠無法從綁定請求中讀取響應控件。