使用 Symfony 2.8 中新的 LDAP 组件进行身份验证
Authentication with the new LDAP component in Symfony 2.8
我想在 Symfony 2.8 中尝试新的 LDAP 组件并在几天前开始使用它。但是我并没有真正理解它并且在对用户进行身份验证时遇到问题。我已经关注了这篇文章:
http://symfony.com/blog/new-in-symfony-2-8-ldap-component
这是我的配置文件:
# app/config/services.yml
services:
app.ldap:
class: Symfony\Component\Ldap\LdapClient
arguments: ["ldaps://ldap.uni-rostock.de"]
和:
# app/config/security.yml
security:
providers:
# in_memory:
# memory: ~
app_users:
ldap:
service: app.ldap
base_dn: ou=people,o=uni-rostock,c=de
search_dn: uid=tester,ou=people,o=uni-rostock,c=de
search_password: testpass
#filter: (sAMAccountName={username})
filter: (uid={username})
default_roles: ROLE_USER
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
provider: app_users
stateless: true
pattern: ^/admin
http_basic_ldap:
service: app.ldap
dn_string: "{username}"
这里是连接服务器的指南(只有德文,但核心部分是代码):
http://www.itmz.uni-rostock.de/en/software/windows/universitaetsweite-dienste/ldap-authentifizierungsserver/
当我 运行 服务器像这样时:php app/console server:run -vvv
并打开 http://localhost:8000/admin
系统提示我输入凭据。不幸的是,即使我尝试了很多次,我也没有通过,而且我很确定我没有打错字。在控制台中只有这条相关行:
[Fri Mar 11 08:39:32 2016] 127.0.0.1:36632 [401]: /admin
我未经授权 (401),并再次提示我输入凭据。
我是不是漏掉了什么?我尝试了许多不同的组合,将值放在引号中,尝试添加:
access_control:
- { path: ^/admin, roles: ROLE_USER }
到 security.yml
,但没有帮助。
还有一个问题有点类似的问题:
但我真的不能再进一步了。
有人知道我还能尝试什么吗?
仅供参考,将此添加为答案:
问题是 dn_string: "{username}"
。除非您在提示输入 username/password 时键入完整的 DN,否则这将不起作用。例如,如果您的所有用户都在一个共同的 OU/container 中,您可以将其设置为:dn_string: uid={username},ou=people,o=uni-rostock,c=de
.
很高兴这修复了它!
我想在 Symfony 2.8 中尝试新的 LDAP 组件并在几天前开始使用它。但是我并没有真正理解它并且在对用户进行身份验证时遇到问题。我已经关注了这篇文章: http://symfony.com/blog/new-in-symfony-2-8-ldap-component
这是我的配置文件:
# app/config/services.yml
services:
app.ldap:
class: Symfony\Component\Ldap\LdapClient
arguments: ["ldaps://ldap.uni-rostock.de"]
和:
# app/config/security.yml
security:
providers:
# in_memory:
# memory: ~
app_users:
ldap:
service: app.ldap
base_dn: ou=people,o=uni-rostock,c=de
search_dn: uid=tester,ou=people,o=uni-rostock,c=de
search_password: testpass
#filter: (sAMAccountName={username})
filter: (uid={username})
default_roles: ROLE_USER
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
provider: app_users
stateless: true
pattern: ^/admin
http_basic_ldap:
service: app.ldap
dn_string: "{username}"
这里是连接服务器的指南(只有德文,但核心部分是代码): http://www.itmz.uni-rostock.de/en/software/windows/universitaetsweite-dienste/ldap-authentifizierungsserver/
当我 运行 服务器像这样时:php app/console server:run -vvv
并打开 http://localhost:8000/admin
系统提示我输入凭据。不幸的是,即使我尝试了很多次,我也没有通过,而且我很确定我没有打错字。在控制台中只有这条相关行:
[Fri Mar 11 08:39:32 2016] 127.0.0.1:36632 [401]: /admin
我未经授权 (401),并再次提示我输入凭据。
我是不是漏掉了什么?我尝试了许多不同的组合,将值放在引号中,尝试添加:
access_control:
- { path: ^/admin, roles: ROLE_USER }
到 security.yml
,但没有帮助。
还有一个问题有点类似的问题:
但我真的不能再进一步了。
有人知道我还能尝试什么吗?
仅供参考,将此添加为答案:
问题是 dn_string: "{username}"
。除非您在提示输入 username/password 时键入完整的 DN,否则这将不起作用。例如,如果您的所有用户都在一个共同的 OU/container 中,您可以将其设置为:dn_string: uid={username},ou=people,o=uni-rostock,c=de
.
很高兴这修复了它!