Php 在会话中存储LDAP连接和绑定
我已经编写了一个应用程序,其中用户通过LDAP进行身份验证和登录。这非常有效,我只需使用他们的凭据执行一个Php 在会话中存储LDAP连接和绑定,php,ldap,session-variables,Php,Ldap,Session Variables,我已经编写了一个应用程序,其中用户通过LDAP进行身份验证和登录。这非常有效,我只需使用他们的凭据执行一个ldap\u bind(),如果是真的,则对他们进行身份验证——否则,告诉他们放弃它。我可以将他们的用户名保存在会话变量中,以便知道他们是谁 现在,应用程序的一部分要求用户搜索LDAP以查找其他用户。我已经使用并实现了这一点,它运行得非常好-用户只需输入用户名、名字或姓氏,所有可能的匹配项都会被建议。可爱的:) 但是,corporate IT甚至不允许匿名浏览网络中的目录,因此,现在,我将用
ldap\u bind()
,如果是真的,则对他们进行身份验证——否则,告诉他们放弃它。我可以将他们的用户名保存在会话变量中,以便知道他们是谁
现在,应用程序的一部分要求用户搜索LDAP以查找其他用户。我已经使用并实现了这一点,它运行得非常好-用户只需输入用户名、名字或姓氏,所有可能的匹配项都会被建议。可爱的:)
但是,corporate IT甚至不允许匿名浏览网络中的目录,因此,现在,我将用户名和密码存储在$\u SESSION
中,以便每次调用autocomplete脚本时都可以执行新绑定。我知道它是相当安全的,而且这个工具只是内部的,但这感觉像是我不应该做的事情,如果它被“释放到野外”,我肯定不会做
我想做的是在他们登录时创建到LDAP的绑定,然后在整个会话中以某种方式记住此身份验证,这样我们就可以执行所需的任意多个搜索,而无需每次重新进行身份验证。我无法访问服务器,因此无法更改服务器上的任何内容。我能否以某种方式将成功的绑定存储在$\u SESSION
中并重用它
如果这不是一个相对简单的问题,那么对于如何实现这一点,有人有其他建议吗?- 与LDAP兼容服务器的初始连接是匿名的
- 成功的绑定请求会更改连接的身份验证状态
- 不成功的绑定请求(或具有零长度DN和密码的绑定请求)将身份验证状态重置为匿名
与LDAP兼容服务器的连接可以保持打开状态,并且可以根据客户机的需要(并且服务器允许)用于任意数量的事务(请求-响应对)。LDAP允许每个连接有多个事务,还允许异步连接。您不能序列化资源类型(这是LDAP\u connect()返回的) 在类似的情况下,我们所做的是使用一个特定的LDAP帐户,该帐户只对LDAP树(以及特定类型的数据,如姓名、姓氏、电子邮件)具有搜索权限,而没有其他权限。此用户的帐户凭据存储在数据库中
也许为了应用第二级安全性,您可以允许该用户仅从特定的IP连接(我认为LDAP服务器支持这一点,但我不是100%确定)。因此,即使凭据被破坏,它们实际上也是无用的您甚至可以限制这个专用用户以防止DOS攻击吗?@Will,这肯定是可取的,特别是在无法链接到特定IP的情况下,这一点很好。安全说明:
ldap_bind()
如果密码为空且LDAP服务器配置为接受匿名身份验证,则返回true
。因此,请确保转义特殊字符,然后检查length>0
@Morris Fauntleroy您是否能够找到解决方案。