使用LDAP进行Symfony身份验证

时间:2015-03-16 08:07:39

标签: php symfony ldap

如果有人能帮助我在symfony2 Framework上使用LDAP身份验证,我真的很感激。主要的想法是使用正确的LDAP来了解所有用户而不使用互联网表而无需登录(插入用户名/密码),让我们说我想要像自动识别一样。

1 个答案:

答案 0 :(得分:1)

您正在寻找单点登录。您真的不必处理LDAP,但必须正确配置您的Web服务器。 Web服务器正在处理认证而不是您的应用程序。然后,您可以从REMOTE_USER环境变量中获取用户登录信息。它是您可信赖的凭据。 In Symfony is special security provider for that(从2.6版开始)。

更新:为IIS添加了更多具体信息

  1. 在IIS上启用Windows身份验证(some maybe helpful link,并确保您的服务器和客户端位于域中。)
  2. 尝试在简单的PHP脚本中捕获$ _SERVER [' REMOTE_USER'] - 您应该会看到您的域名登录。
  3. 如果一切顺利,您可以从上面的链接使用Symfony remote_user提供程序。您还需要在数据库中拥有用户(即只有域登录,电子邮件,可能还有一些标志)才能使用角色,记录等。还要确保您的服务器位于本地Intranet区域。

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

    <强> security.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身份验证正在运行且您的登录名为DOMAIN \ login,则在单击“运行演示”按钮后将登录。如果您尝试访问/demo/secured/login,您将获得403.我希望它足以作为介绍Symfony可以为您做什么。