Php 我能否以编程方式确定ldap_绑定是否因网络问题而失败?
我们使用LDAP服务器对用户进行身份验证。因为服务器是远程访问的,所以我们的Web服务器很有可能是在线的,而LDAP服务器将停机进行维护 现在,当ldap_绑定失败时,我假设这是一个用户身份验证问题(错误的用户名/密码),我会向用户显示一条消息。但是,如果与LDAP服务器的连接出现故障(这不一定是凭据问题),那么最终会有数百名用户告诉我他们的密码不起作用,而这不是问题所在 我怎样才能从中恢复过来?ldap_connect似乎在所有情况下都会成功,因为连接会延迟到调用ldap_bind为止。ldap_bind的返回值是一个简单的布尔值,虽然PHP显示的警告消息是信息性的,但这对我的代码没有太大帮助。使用Php 我能否以编程方式确定ldap_绑定是否因网络问题而失败?,php,ldap,Php,Ldap,我们使用LDAP服务器对用户进行身份验证。因为服务器是远程访问的,所以我们的Web服务器很有可能是在线的,而LDAP服务器将停机进行维护 现在,当ldap_绑定失败时,我假设这是一个用户身份验证问题(错误的用户名/密码),我会向用户显示一条消息。但是,如果与LDAP服务器的连接出现故障(这不一定是凭据问题),那么最终会有数百名用户告诉我他们的密码不起作用,而这不是问题所在 我怎样才能从中恢复过来?ldap_connect似乎在所有情况下都会成功,因为连接会延迟到调用ldap_bind为止。lda
ldap_errno()
可能的错误代码列表:请求/响应框架
LDAP交互由请求和响应组成。响应将始终包含一个结果
代码。当请求是绑定时,非零结果代码表示出现错误,例如
例如,结果代码decimal49
表示提供的凭据不正确(在
在某些情况下,出于安全原因,当条目不存在时,可以返回此结果代码
以误导攻击者)。应用程序编码人员应验证与
服务器可以成功,并且绑定可分辨名称具有正确的凭据
使用已知的正确工具(如ldapsearch
)进行身份验证。例如,尝试:
ldapsearch -h hostname -p port \
-D distinguished-name-here -w <password> -b '' -s base '(&)'
ldapsearch-h主机名-p端口\
-D此处的可分辨名称-w-b'-s基'(&)'
上述搜索建立连接,将连接的授权状态更改为
使用给定凭据指定的身份验证ID,然后从根目录检索属性
DSE。如果此搜索成功,则可以向应用程序编码人员保证
凭据是正确的
网络超时
应用程序编码人员应始终使用支持网络超时概念的API
由于超时不是LDAP协议的一部分,因此对搜索有时间限制(请参阅
),但协议中没有网络超时。
如果LDAP API不支持网络超时,则不应考虑使用该API
非平凡的LDAP客户端工作
另见