使用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,但没有帮助。

还有一个问题有些类似的问题:

使用Symfony 2.8进行LDAP身份验证

但我真的无法进一步移动。

有人可能知道我还能尝试什么吗?

仅供参考,添加以下内容作为答案:

这个问题将是dn_string: "{username}".除非您在提示输入用户名/密码时键入完整的 DN,否则此操作将不起作用。例如,如果所有用户都在一个通用的 OU/容器中,则可以将其设置为:dn_string: uid={username},ou=people,o=uni-rostock,c=de .

很高兴这解决了它!