Symfony - аутентификация на сервере LDAP - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь аутентифицировать своих пользователей на сервере 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 .. Я могу привязаться к своему серверу, однако я получаю ошибку неверных учетных данных при отправке формы !! Пожалуйста, помогите соответственно !!

1 Ответ

0 голосов
/ 12 сентября 2018

Вам не хватает uid_key в определении 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
                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_string и query_string. Не уверен, что все это необходимо, я впервые использую Symfony.

ADLDAP_BASEDN определяется в моем .env файле как:

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

редактировать Извините, я неправильно понял ваш вопрос, почему-то я думал, что вы проходите проверку подлинности в Active Directory. Для openldap ключ uid должен быть uid, что, скорее всего, является значением по умолчанию. Но ваша строка dn_string выглядит неправильно для меня, и, возможно, query_string также необходима. Я соответственно отредактирую ответ завтра, когда меня не будет на моем телефоне.

...