Аутентификация LDAP =================== Требования[¶](#requirements "Ссылка на этот заголовок") ------------------------------------------------------- - Включенное в PHP раширение LDAP - Сервер LDAP: - OpenLDAP - Microsoft Active Directory - Novell eDirectory Рабочий процесс[¶](#workflow "Ссылка на этот заголовок") -------------------------------------------------------- Когда активирована аутентификация LDAP, процесс входа выглядит следующим образом: 1. Выполняется попытка аутентификации пользователя в базе данных Канборда 2. Если пользователь не найден в базе Канборда, выполняется аутентификация LDAP 3. Если аутентификация LDAP выполнена успешно, по умолчанию, локальный пользователь (в Канборде) создается автоматически без пароля и помечается как пользователь LDAP. Полное имя и email адрес автоматически подгружаются из сервера LDAP. Типы аутентификации[¶](#authentication-types "Ссылка на этот заголовок") ------------------------------------------------------------------------ | Тип | Описание | |--------------|-------------------------------------------------------------| | Proxy User | Использовать специального пользователя для просмотра директории LDAP | | User | Использовать учетные данные конечного пользователя для просмотра директории LDAP | | Anonymous | Не надо выполнять аутентификацию для доступа к каталогу LDAP | **Рекомендуемый метод аутентификации - “Proxy”**. ### Анонимный (Anonymous) метод[¶](#anonymous-mode "Ссылка на этот заголовок") define('LDAP_BIND_TYPE', 'anonymous'); define('LDAP_USERNAME', null); define('LDAP_PASSWORD', null); Этот метод используется по умолчанию, но некоторые сервера LDAP не поддерживают доступ анонимам, из соображений безопасности. ### Proxy метод[¶](#proxy-mode "Ссылка на этот заголовок") Специальный пользователь используется для доступа к директории LDAP: define('LDAP_BIND_TYPE', 'proxy'); define('LDAP_USERNAME', 'my proxy user'); define('LDAP_PASSWORD', 'my proxy password'); ### Пользовательский метод (user)[¶](#user-mode "Ссылка на этот заголовок") Этот метод используется для доступа под учетной записью конечного пользователя. Например, Microsoft Active Directory не разрешает подключение под анонимным пользователем и если вы не хотите использовать пользователя proxy, то используйте этот метод. define('LDAP_BIND_TYPE', 'user'); define('LDAP_USERNAME', '%s@kanboard.local'); define('LDAP_PASSWORD', null); В этом методе, константа `LDAP_USERNAME` использутся как шаблон для пользователя ldap, например: - `%s@kanboard.local` будет заменен `my_user@kanboard.local` - `KANBOARD\\%s` будет заменен на `KANBOARD\my_user` Фильтр пользователей LDAP[¶](#user-ldap-filter "Ссылка на этот заголовок") -------------------------------------------------------------------------- Параметр конфигурации `LDAP_USER_FILTER` используется для поиска пользователей по директории LDAP. Например: - `(&(objectClass=user)(sAMAccountName=%s))` будет заменено на `(&(objectClass=user)(sAMAccountName=указанный_пользователь))` - `uid=%s` is replaced by `uid=указанный_пользователь` Другие примеры [фильтров для Active Directory](http://social.technet.microsoft.com/wiki/contents/articles/5392.active-directory-ldap-syntax-filters.aspx) Пример фильра доступа в Канборд: `(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=Kanboard Users,CN=Users,DC=kanboard,DC=local))` Этот пример разрешает подключатся к Канборду только пользователям участникам группы “Kanboard Users” Пример для Microsoft Active Directory[¶](#example-for-microsoft-active-directory "Ссылка на этот заголовок") ------------------------------------------------------------------------------------------------------------ Предположим, что мы имеем домен `KANBOARD` (kanboard.local) и контролер домена `myserver.kanboard.local`. Первый пример для метода прокси (proxy):