Kanboard-Prod/doc/ru_RU/ldap-authentication.markdown

9.4 KiB
Raw Blame History

Аутентификация LDAP

Требования

  • Включенное в PHP раширение LDAP

  • Сервер LDAP:

    • OpenLDAP

    • Microsoft Active Directory

    • Novell eDirectory

Рабочий процесс

Когда активирована аутентификация LDAP, процесс входа выглядит следующим образом:

  1. Выполняется попытка аутентификации пользователя в базе данных Канборда

  2. Если пользователь не найден в базе Канборда, выполняется аутентификация LDAP

  3. Если аутентификация LDAP выполнена успешно, по умолчанию, локальный пользователь (в Канборде) создается автоматически без пароля и помечается как пользователь LDAP.

Полное имя и email адрес автоматически подгружаются из сервера LDAP.

Типы аутентификации

Тип Описание
Proxy User Использовать специального пользователя для просмотра директории LDAP
User Использовать учетные данные конечного пользователя для просмотра директории LDAP
Anonymous Не надо выполнять аутентификацию для доступа к каталогу LDAP

Рекомендуемый метод аутентификации - “Proxy”.

Анонимный (Anonymous) метод

define('LDAP_BIND_TYPE', 'anonymous');

define('LDAP_USERNAME', null);

define('LDAP_PASSWORD', null);

Этот метод используется по умолчанию, но некоторые сервера LDAP не поддерживают доступ анонимам, из соображений безопасности.

Proxy метод

Специальный пользователь используется для доступа к директории LDAP:

define('LDAP_BIND_TYPE', 'proxy');

define('LDAP_USERNAME', 'my proxy user');

define('LDAP_PASSWORD', 'my proxy password');

Пользовательский метод (user)

Этот метод используется для доступа под учетной записью конечного пользователя.

Например, 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

Параметр конфигурации LDAP_USER_FILTER используется для поиска пользователей по директории LDAP.

Например:

  • (&(objectClass=user)(sAMAccountName=%s)) будет заменено на (&(objectClass=user)(sAMAccountName=указанный_пользователь))

  • uid=%s is replaced by uid=указанный_пользователь

Другие примеры фильтров для Active Directory

Пример фильра доступа в Канборд:

(&(objectClass=user)(sAMAccountName=%s)(memberOf=CN=Kanboard Users,CN=Users,DC=kanboard,DC=local))

Этот пример разрешает подключатся к Канборду только пользователям участникам группы “Kanboard Users”

Пример для Microsoft Active Directory

Предположим, что мы имеем домен KANBOARD (kanboard.local) и контролер домена myserver.kanboard.local.

Первый пример для метода прокси (proxy):

<?php



// Enable LDAP authentication (false by default)

define('LDAP_AUTH', true);



define('LDAP_BIND_TYPE', 'proxy');

define('LDAP_USERNAME', 'administrator@kanboard.local');

define('LDAP_PASSWORD', 'my super secret password');



// LDAP server hostname

define('LDAP_SERVER', 'myserver.kanboard.local');



// LDAP properties

define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');

define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');

Второй пример с пользовательским методом (user):

<?php



// Enable LDAP authentication (false by default)

define('LDAP_AUTH', true);



define('LDAP_BIND_TYPE', 'user');

define('LDAP_USERNAME', '%s@kanboard.local');

define('LDAP_PASSWORD', null);



// LDAP server hostname

define('LDAP_SERVER', 'myserver.kanboard.local');



// LDAP properties

define('LDAP_USER_BASE_DN', 'CN=Users,DC=kanboard,DC=local');

define('LDAP_USER_FILTER', '(&(objectClass=user)(sAMAccountName=%s))');

Пример для OpenLDAP

Наш сервер LDAP - myserver.example.com и все пользователи хранятся в ou=People,dc=example,dc=com.

Для этого примера мы использовали анонимное подключение.

<?php



// Enable LDAP authentication (false by default)

define('LDAP_AUTH', true);



// LDAP server hostname

define('LDAP_SERVER', 'myserver.example.com');



// LDAP properties

define('LDAP_USER_BASE_DN', 'ou=People,dc=example,dc=com');

define('LDAP_USER_FILTER', 'uid=%s');

Выключение автоматического создания учетных записей

По умолчанию, Канборд автоматически создает учетную запись пользователя, если такой пользователь не найден.

Вы можете выключить это поведение, если вы предпочитаете создавать учетные записи вручную.

Для этого установите значение LDAP_ACCOUNT_CREATION в false:

// Automatically create user account

define('LDAP_ACCOUNT_CREATION', false);

Устранение неисправностей

Если включен SELinux, вы должны разрешить Apache доступ к вашему серверу LDAP.

  • Вы должны переключить SELinux в разрешающий режим (permissive mode) или совсем выключить (не рекомендуется)

  • Вы должны разрешить все сетевые подключения, например setsebool -P httpd_can_network_connect=1 или назначить более ограничивающие правила

В любом случае, ознакомтесь с официальной документацией Redhat/Centos.

Если вам не удается настроить аутентификацию LDAP, то вы можете включить режим отладки и посмотреть файлы событий.

Русская документация Kanboard