Symfony-针对LDAP服务器的身份验证

问题描述 投票:1回答:1

我正在尝试针对LDAP服务器对我的用户进行身份验证。

security:
    providers:
        my_ldap:
            ldap:
                service: Symfony\Component\Ldap\Ldap
                base_dn: 'DC=maxcrc,DC=com'
                search_dn: 'CN=manager,DC=maxcrc,DC=com'
                search_password: 'secret'
                default_roles: ROLE_USER
...
    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~

            form_login_ldap:
                #http_basic_ldap:
                login_path: login
                check_path: login
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'maxcrc\{username}'

my services.yml:

...

    Symfony\Component\Ldap\Ldap:
        arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
        arguments:
        -   host: localhost
            port: 389
            #encryption: tls
            options:
                protocol_version: 3
                referrals: false`

它似乎完全遵循symfony intructions ..我可以绑定到我的服务器,但每当我提交我的表单时,我得到无效的凭据错误!请相应协助!!

symfony openldap
1个回答
0
投票

您在ldap定义中缺少uid_key

security:
    providers:
        my_ldap:
            ldap:
                service: Symfony\Component\Ldap\Ldap
                base_dn: 'DC=maxcrc,DC=com'
                search_dn: 'CN=manager,DC=maxcrc,DC=com'
                search_password: 'secret'
                default_roles: ROLE_USER
                uid_key: 'samaccountname'

除此之外,我有这些设置:

    firewalls:
      dev:
          pattern: ^/(_(profiler|wdt)|css|images|js)/
          security: false
      main:
          anonymous: ~
          form_login_ldap:
              service: Symfony\Component\Ldap\Ldap
              login_path: login
              check_path: login
              dn_string: '%env(ADLDAP_BASEDN)%'
              query_string: '(samaccountname={username})'
          logout:
              path: /logout
              target: login

相关的是dn_stringquery_string。不确定是否所有这些都是nessecary,这是我第一次使用symfony。

ADLDAP_BASEDN在我的.env文件中定义为:

ADLDAP_BASEDN=DC=blah,DC=example,DC=com

编辑对不起,我误解了你的问题,不知怎的,我认为你对Active Directory进行身份验证。使用openldap,uid键应该是uid,这很可能是默认值。但你的dn_string对我来说看起来不对,也许还需要query_string。当我不在手机上时,明天我会相应地编辑答案。

© www.soinside.com 2019 - 2024. All rights reserved.