2012-02-21 29 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以外,任何其他工具都只能用于基础,并且永远无法从绑定请求中读取响应控件。