PHP LDAP会话持久性
我正在用PHP开发一个网站,该网站具有简单的用户身份验证和带有LDAP的CRUD。 我在广告中设置了规则,指定哪些组可以或不能编辑其他组,哪些属性可以编辑用户 问题是,在成功地将用户绑定到广告并重定向到另一个页面后,先前绑定的会话就消失了 仅在身份验证之后和重定向之前,函数将返回用户的DN。但是,在重定向之后,它什么也不返回 我提到“PHPLDAP不支持持久连接”,这是我能找到的关于这方面的唯一信息 我需要为用户CRUD保留用户会话 例如,如果用户想要编辑其密码或名字,则肯定会返回“Insufficient access”,因为如果没有正确的会话,ldap可能会尝试匿名绑定 由于这种行为,我不能创建简单的用户CRUD,这正常吗 目前,我看到两个解决方案并不是真正安全友好的PHP LDAP会话持久性,php,ldap,Php,Ldap,我正在用PHP开发一个网站,该网站具有简单的用户身份验证和带有LDAP的CRUD。 我在广告中设置了规则,指定哪些组可以或不能编辑其他组,哪些属性可以编辑用户 问题是,在成功地将用户绑定到广告并重定向到另一个页面后,先前绑定的会话就消失了 仅在身份验证之后和重定向之前,函数将返回用户的DN。但是,在重定向之后,它什么也不返回 我提到“PHPLDAP不支持持久连接”,这是我能找到的关于这方面的唯一信息 我需要为用户CRUD保留用户会话 例如,如果用户想要编辑其密码或名字,则肯定会返回“Insuff
- 第一种方法是存储用户身份验证信息并在每个页面上绑定
- 第二种方法是在每次更新时以管理员身份登录。 出于安全原因,这也是错误的,它绕过了所有关于用户版本的广告配置
谢谢。问题不在于LDAP,而在于HTTP HTTP是无状态协议,而LDAP是有状态协议 当您发出HTTP请求时,PHP脚本将执行并在发送响应时终止,这将破坏脚本中创建的内容(与PHP脚本终止时关闭mysql连接的方式相同) 不同之处在于,在mysql中,每个用户都使用自己的凭证来操作mysql数据库的概念没有被使用,您通常会设置一个数据库用户作为执行操作的用户 在LDAP中,您希望更改此行为,因为它不安全,但是。。。一直都是这样 因此,就像在MySQL中一样(例如),当您需要连接到LDAP服务器时,必须使用类似于singleton的东西,它在每个PHP脚本的开头启动LDAP连接。要做到这一点,正如您所说,您有两种解决方案:
- 存储用户凭据并使用它们打开每个页面上的连接
- 使用技术帐户提出请求
createdBy
操作属性中引用的用户)
查看本文档,了解如何实施该行为:
及
(第15.3节SASL代理授权)
注意:您需要检查您使用的LDAP实现,以查看是否支持此机制。问题不在于LDAP,而在于HTTP HTTP是无状态协议,而LDAP是有状态协议 当您发出HTTP请求时,PHP脚本将执行并在发送响应时终止,这将破坏脚本中创建的内容(与PHP脚本终止时关闭mysql连接的方式相同) 不同之处在于,在mysql中,每个用户都使用自己的凭证来操作mysql数据库的概念没有被使用,您通常会设置一个数据库用户作为执行操作的用户 在LDAP中,您希望更改此行为,因为它不安全,但是。。。一直都是这样 因此,就像在MySQL中一样(例如),当您需要连接到LDAP服务器时,必须使用类似于singleton的东西,它在每个PHP脚本的开头启动LDAP连接。要做到这一点,正如您所说,您有两种解决方案:
- 存储用户凭据并使用它们打开每个页面上的连接
- 使用技术帐户提出请求
createdBy
操作属性中引用的用户)
查看本文档,了解如何实施该行为:
及
(第15.3节SASL代理授权)
注意:您需要检查您使用的LDAP实现,看看是否支持此机制。哇,这是很多有用的信息,谢谢!你的解决方案真的很有趣,我将开始深入研究文档,看看我能用SASL做些什么。我将返回结果。或者使用编程语言/运行时环境,您可以使用用户拥有的持久LDAP连接实现多线程服务。哇,这是很多有用的信息,谢谢!你的解决方案真的很有趣,我将开始深入研究文档,看看我能用SASL做些什么。我将返回结果。或者使用编程语言/运行时环境,通过该环境,您可以使用用户拥有的持久LDAP连接实现多线程服务。