Я работаю над проектом Symfony 3.2 и пытаюсь реализовать процесс аутентификации на AD компании через LDAP. Я не понимаю все о AD и LDAP, я обычно больше разбираюсь в среде Linux prod, но я знаю достаточно для этого проекта, и у Symfony есть теоретически все, что мне нужно.Symfony 3 Ошибка аутентификации и авторизации LDAP: не удалось выполнить поиск
У меня возникает другая проблема в зависимости от определения службы.
Во-первых, общий код
security.yml
provider_company_ldap:
ldap:
base_dn: dc=domaine,dc=local
search_dn: ~
search_password: ~
service: company.ldap
default_roles: ROLE_USER
company_ldap_firewall:
anonymous: true
provider: provider_company_ldap
form_login_ldap:
service: company.ldap
login_path: company_rhag_user_login
check_path: company_rhag_user_check
dn_string: 'sAMAccountName={username},ou=Utilisateurs,dc=domaine,dc=local'
pattern: ^/
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/admin, roles: ROLE_ADMIN }
- { path: ^/, roles: ROLE_USER }
CompanyBundle: Пользователь: login.html.twig
<form action="{{ path('company_rhag_user_check') }}" method="post" class="form-horizontal">
<div class="form-group">
<label for="username" class="col-sm-2 control-label">
Login :
</label>
<div class="col-sm-10">
<input type="text" class="form-control" value="{{ last_username }}"
id="username" name="_username" required="required" />
</div>
</div>
<div class="form-group">
<label for="password" class="col-sm-2 control-label">
Password :
</label>
<div class="col-sm-10">
<input type="password" class="form-control" value=""
id="password" name="_password" required="required" />
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn" id="_submit" name="_submit">
Connexion
</button>
</div>
</div>
</form>
первый случай: обслуживание с классом Ldap
Использование класса Ldap как LdapClient отмечен устаревшим и будет удален в 4.0:
services:
company.ldap:
class: Symfony\Component\Ldap\Ldap
arguments:
- '%dbldap_host%' # local ip for AD server
С этой услугой, страница не может отобразить, и сообщение об ошибке:
FatalThrowableError in Ldap.php line 28: Type error: Argument 1 passed to Symfony\Component\Ldap\Ldap::__construct() must be an instance of Symfony\Component\Ldap\Adapter\AdapterInterface, string given, called in C:\blahblahblah\var\cache\dev\appDevDebugProjectContainer.php on line 446
второго случай: осуждаются LdapClient класс
Итак, я попытался с устаревшим классом класса LdapClient:
services:
company.ldap:
class: Symfony\Component\Ldap\LdapClient
arguments:
- '%dbldap_host%' # local ip for AD server
При этом форма входа в систему отображается правильно, на панели инструментов Symfony отображается аутентификация как anon., С правой ссылкой company_ldap_firewall
. Пока все не будет хорошо, если я проигнорирую устаревшее предупреждение. При подаче, какими бы ни были полномочия, я получил это сообщение:
Could not complete search with dn "dc=domaine,dc=local", query "(sAMAccountName=loginvalue)" and filters "*"
Конечно, лучшим решением было бы использовать класс не-осуждается службы, но на данный момент, любой рабочий раствор будет делать ,
Благодарю вас за ваше время и вашу помощь.
+1 У меня такой же вопрос. Не удалось выполнить поиск с помощью dn "dc = domaine, dc = local", query "(sAMAccountName = loginvalue)" и фильтрует "*" – Vittore