使用 LDAP 进行 Symfony 身份验证


Symfony authentication with LDAP

如果有人能帮助我在symfony2 Framework上使用LDAP身份验证,我真的很感激。主要思想是正确使用LDAP来了解所有用户,而无需使用内部表和登录名(插入用户名/密码),假设我想成为自动识别之类的东西。

您正在寻找单点登录。您实际上不必处理LDAP,但是必须正确配置Web服务器。Web 服务器正在处理身份验证,而不是您的应用程序。然后,您可以从环境变量中获取用户登录REMOTE_USER。您可以信任的是凭据。在Symfony中是特殊的安全提供程序(从2.6版本开始)。

更新:添加了有关 IIS 的更多具体信息

  1. 在 IIS 上启用 Windows 身份验证(一些链接可能很有用,并确保您的服务器和客户端在域中)。
  2. 尝试在简单的PHP脚本中捕获$ _SERVER['REMOTE_USER'] - 您应该看到您的域登录名。

如果一切顺利,你可以从上面的链接与Symfony remote_user提供商一起玩。您还需要在数据库中拥有用户(即仅域登录,电子邮件和一些标志)以使用角色,日志记录等。还要确保您的服务器位于本地内联网区域中。

更新 2:添加了 Symfony 配置示例

安全.yml

security:
  role_hierarchy:
    ROLE_ADMIN:       ROLE_USER
    ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
  providers:
    in_memory:
      memory:
        users:
          - { name: 'DOMAIN'login', roles: [ 'ROLE_USER' ] }
  firewalls:
    dev:
      pattern:  ^/(_(profiler|wdt)|css|images|js)/
        security: false
    secured_area:
      pattern: ^/demo
      remote_user:
        provider: in_memory
  access_control:
    - { path: ^/demo/secured/login, roles: ROLE_ADMIN }

这是使用 AcmeDemoBundle 进行干净 Symfony 2.6 安装的示例。尝试自己玩它。在主页上,您根本没有登录。如果Windows身份验证正常工作,并且您的登录名是域''登录,则单击"运行演示"按钮后,您将登录。如果您尝试访问/demo/secured/login您将获得 403。我希望这足以作为Symfony可以为您做什么的介绍。