gpt4 book ai didi

Symfony2 : use both LDAP (Active directory) and DB for user authentication

转载 作者:行者123 更新时间:2023-12-02 02:48:45 25 4
gpt4 key购买 nike

我正在使用 Symfony 框架 v 2.4.2 来更新现有网站,该网站会执行双重检查以登录用户:

  1. 首先,它检查用户名和密码是否属于有效的 Active Directory 用户(使用 PHP 的 ldap_bind() 函数);
  2. 如果是这样,它会根据数据库表仅检查用户名(数据库中不存储密码);
  3. 如果在数据库表中找到用户名,网站就会从数据库加载用户配置文件,并且用户通过身份验证。

如何在 Symfony2 中复制此身份验证过程?

到目前为止,我被 FOSUserBundle 和 FR3DLdapBundle 困住了。 :我设法使用链式提供程序(ldapdb),但似乎 LDAP 凭据完全被忽略:用户可以使用存储在中的凭据登录数据库,即使 ldap_bind() 失败 - 这与第 1 点和第 2 点完全相反。

此外,当使用 FOSUserBundle 时,似乎必须将密码存储在数据库中。

注意第1点。 2:用户必须能够从网站外部(即从 Active Directory)自由更改其 LDAP 密码,然后使用新凭据登录 - 无需更新网站的用户数据库。

欢迎任何解决方案,我不太喜欢 FOSUserBundle,更不喜欢 FR3DLdapBundle。

最佳答案

我是这样计算的:

  1. 基于 FOSUSerBundle 用户模型创建了自定义用户实体;
  2. 创建了一个自定义用户提供程序(请参阅 Javad 对此问题的回答),将其注册为服务并将其添加到 app/config/security.yml 中的 providers 部分>;
  3. 从 v2.4 开始,Symfony(幸运的是)提供了一个简化的身份验证系统,它不会强制您完成所有自定义身份验证提供程序的内容(恕我直言,这是一个真正的痛苦):它称为Authenticator 并记录在案 here 。我实现了自己的 Authenticator 类,并使用我的自定义 UserProvider 类执行了双重检查。

关于Symfony2 : use both LDAP (Active directory) and DB for user authentication,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22501134/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com