如果有人能帮助我在symfony2 Framework上使用LDAP身份验证,我真的很感激。主要思想是正确使用LDAP来了解所有用户,而无需使用内部表和登录名(插入用户名/密码),假设我想成为自动识别之类的东西。
您正在寻找单点登录。您实际上不必处理LDAP,但是必须正确配置Web服务器。Web 服务器正在处理身份验证,而不是您的应用程序。然后,您可以从环境变量中获取用户登录REMOTE_USER。您可以信任的是凭据。在Symfony中是特殊的安全提供程序(从2.6版本开始)。
更新:添加了有关 IIS 的更多具体信息
- 在 IIS 上启用 Windows 身份验证(一些链接可能很有用,并确保您的服务器和客户端在域中)。
- 尝试在简单的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可以为您做什么的介绍。