Проблема с аутентификацией Symfony 3.4 ldap

Я пытаюсь аутентифицировать пользователей через ldap (активный каталог окна) с Symfony 3.4, и я использую этот документация

Пожалуйста, помогите мне!!!!

Но я получаю ошибку:

php.DEBUG: Warning: ldap_bind(): Unable to bind to server: Invalid credentials {"exception":"[object] (Symfony\Component\Debug\Exception\SilencedErrorContext: {\"severity\":2,\"file\":\"C:\\OSPanel\\domains\\warcsymfony\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\Ldap\\Adapter\\ExtLdap\\Connection.php\",\"line\":53,\"trace\":[{\"file\":\"C:\\OSPanel\\domains\\warcsymfony\\vendor\\symfony\\symfony\\src\\Symfony\\Component\\Ldap\\Ldap.php\",\"line\":38,\"function\":\"bind\",\"class\":\"Symfony\\Component\\Ldap\\Adapter\\ExtLdap\\Connection\",\"type\":\"->\"}],\"count\":1})"} [] [2018-03-14 10:27:03] security.INFO: Authentication request failed. {"exception":"[object] (Symfony\Component\Security\Core\Exception\BadCredentialsException(code: 0): Bad credentials. at C:\OSPanel\domains\warcsymfony\vendor\symfony\symfony\src\Symfony\Component\Security\Core\Authentication\Provider\UserAuthenticationProvider.php:71, Symfony\Component\Security\Core\Exception\UsernameNotFoundException(code: 0): User \"testusername\" not found. at C:\OSPanel\domains\warcsymfony\vendor\symfony\symfony\src\Symfony\Component\Security\Core\User\LdapUserProvider.php:75, Symfony\Component\Ldap\Exception\ConnectionException(code: 0): Invalid credentials at C:\OSPanel\domains\warcsymfony\vendor\symfony\symfony\src\Symfony\Component\Ldap\Adapter\ExtLdap\Connection.php:54)"} [] [2018-03-14 10:27:03] security.DEBUG: Authentication failure, redirect triggered. {"failure_path":"login"} []

Я попробовал изменить параметры, но это не сработало

security.yml

security:

  providers:
    my_ldap:
        ldap:
            service: Symfony\Component\Ldap\Ldap
            base_dn: DC=example,DC=com
            search_dn: 'OU=all-users-accounts,DC=example,DC=com'
            search_password: password
            default_roles: ROLE_USER
            uid_key: sAMAccountName
firewalls:
    dev:
        pattern: ^/(_(profiler|wdt)|css|images|js)/
        security: false
    main:
        pattern: ^/
        anonymous: ~
        form_login_ldap:
            login_path: login
            check_path: login
            service: Symfony\Component\Ldap\Ldap
            dn_string: 'sAMAccountName = {username},DC=example,DC=com'

service.yml
services:
    Symfony\Component\Ldap\Ldap:
        arguments: ['@Symfony\Component\Ldap\Adapter\ExtLdap\Adapter']
    Symfony\Component\Ldap\Adapter\ExtLdap\Adapter:
        arguments:
            -   host: **.**.**.**
                port: 389
                encryption: 'none'
                options:
                    protocol_version: 3
                    referrals: false

SecurityController

 /**
 * @Route("/login", name = "login")
 */
public function loginAction(Request $request, AuthenticationUtils $authenticationUtils){

    $error  = $authenticationUtils->getLastAuthenticationError();

    $username = $authenticationUtils->getLastUsername();

    return $this->render('security/login.html.twig', array(
        'last_username' => $username,
        'error' => $error
        ));
}

, DC = example, DC = example 'последний DC в строке search_dn должен быть DC = com

Agris 20.03.2018 09:24

@Agris не работает, все сделал правильно. Строка search_dn является всего лишь примером.

Azamat Turdubekuulu 20.03.2018 10:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
1
2
2 176
2

Ответы 2

Так что проверено и работает. Я думаю, в чем была ваша ошибка: search_dn, search_password и query_string.

my_ldap:
      ldap:
          service: Symfony\Component\Ldap\Ldap
          base_dn: "DC=example,DC=lv"
          #remmber this is ldap user with read only permisions
          #could be also just username search_dn:"bind"
          search_dn: "CN=bind bind,CN=Users,DC=example,DC=lv"
          search_password: "bind user password"
          uid_key: sAMAccountName

в примере формы я использовал строку запроса - она ​​проверяет, является ли sAMAccoutName и является ли членом SystemGroup.

form_login_ldap:
                provider:  my_ldap
                login_path: login_route
                check_path: login_check_form
                service: Symfony\Component\Ldap\Ldap
                dn_string: 'DC=example,DC=lv'
                query_string: '(&(sAMAccountName = {username})(memberof=CN=SystemGroup,OU=Groups,OU=xxx_users,DC=example,DC=lv))'

Просто проверьте свою query_string с помощью ldap_search http://php.net/manual/en/function.ldap-search.php#112191

Я считаю, что это ваш search_dn неверен, эта строка:

search_dn: 'OU=all-users-accounts,DC=example,DC=com'

Это должен быть dn администратора, который имеет доступ для просмотра Active Directory. Вы можете использовать Бесплатный браузер LDAP от Softerra, чтобы просмотреть активный каталог и выяснить это.

Все это описано в моей статье Аутентификация AD компонента Symfony LDAP. Имейте в виду, что вам нужно много отладить, чтобы это заработало, но как только вы начнете работать, это будет легко.

Мне просто нужно ldap_bind (), мне не нужно читать информацию о пользователе, просто проверяю имя пользователя и пароль. Я тестировал собственный код без компонента symfony ldap, и он работал.

Azamat Turdubekuulu 27.03.2018 19:22

Компоненту Symfony LDAP требуется учетная запись администратора, которая может читать AD.

Alvin Bunk 27.03.2018 23:07

Не могу открыть вашу ссылку: alvinbunk.wordpress.com/2017/09/07/…

Azamat Turdubekuulu 28.03.2018 12:53

Ссылка у меня работает нормально! Просто нажмите на это прямо в этом посте.

Alvin Bunk 28.03.2018 17:38

Другие вопросы по теме