LDAP configuration: Difference between revisions
Chernykov sv (talk | contribs) No edit summary |
m (minor fixes) |
||
Line 1: | Line 1: | ||
== Пример конфигурации сервера Svacer для поддержки аутентификации по LDAP протоколу == | == Пример конфигурации сервера Svacer для поддержки аутентификации по LDAP протоколу == | ||
Для | Для упрощения настройки интеграции с LDAP сервером, процесс настройки можно разбить на этапы и переходить к следующему только если успешно завершен предыдущий этап. В первую очередь необходимо выяснить актуальные параметры подключения к ldap серверу: | ||
* URL; Например ldap://10.11.12.13:389 или ldaps://10.11.12.13:636 | * URL; Например ldap://10.11.12.13:389 или ldaps://10.11.12.13:636 | ||
* Учетные данные с которыми будет осуществляться подключение к LDAP серверу при каждой попытке входа пользователем; Например, login: cn=admin,dc=example,dc=com, пароль: 12345678 | * Учетные данные с которыми будет осуществляться подключение к LDAP серверу при каждой попытке входа пользователем; Например, login: cn=admin,dc=example,dc=com, пароль: 12345678 | ||
* Определиться с корнем LDAP дерева (базовый узел), относительно которого будут выполняться все операции; Например: dc=example,dc=com | * Определиться с корнем LDAP дерева (базовый узел), относительно которого будут выполняться все операции; Например: dc=example,dc=com | ||
* Проверить, что с указанными учетными данными возможно подключение к серверу LDAP и просмотр его содержимого с некоторого узла, расположенного ниже базового; Например, с узла ou=users,dc=example,dc=com для рассматриваемого примера. Проверить можно, например, используя следующую команду: | * Проверить, что с указанными учетными данными возможно подключение к серверу LDAP и просмотр его содержимого с некоторого узла, расположенного ниже базового; Например, с узла ou=users,dc=example,dc=com для рассматриваемого примера. Проверить можно, например, используя следующую команду: | ||
:<pre>LDAPTLS_REQCERT=never ldapsearch -v -x -D cn=admin,dc=example,dc=com -w 12345678 -b ou=users,dc=example,dc=com -H ldaps://127.0.0.1:636</pre> | |||
для случая поддержки TLS, или | :для случая поддержки TLS, или | ||
:<pre>ldapsearch -v -x -D cn=admin,dc=example,dc=com -w 12345678 -b ou=users,dc=example,dc=com -H ldap://127.0.0.1:389</pre> | |||
для случая без поддержки TLS | :для случая без поддержки TLS | ||
* Определиться с атрибутом записи, по которой будет осуществляться вход. Например cn, mail или sAMAccountName | * Определиться с атрибутом записи, по которой будет осуществляться вход. Например cn, mail или sAMAccountName | ||
* Если используется Active Directory, целесообразно в качестве фильтра для поиска записей о пользователе указать значение (&(objectCategory=Person)(sAMAccountName=*)) | * Если используется Active Directory, целесообразно в качестве фильтра для поиска записей о пользователе указать значение (&(objectCategory=Person)(sAMAccountName=*)) | ||
=== Основные настройки LDAP === | === Основные настройки LDAP === | ||
* Использовать следующий шаблон конфигурации, заменив текст, выделенный жирным, | * Использовать следующий шаблон конфигурации, заменив текст, выделенный жирным, актуальными данными | ||
{ | |||
"name": "test_ldap", | |||
"basedn": '''"dc=example,dc=com"''', | |||
"connection": { | |||
"url": '''"ldap://ldap1.example.com:389"''', | |||
"connectAs": '''"cn=admin,dc=example,dc=com"''', | |||
"password": '''"12345678"''' | |||
}, | |||
"user": { | |||
"basedn": '''"ou=users"''', | |||
"filter": '''"(&(objectClass=PosixAccount)(cn=*))"''', | |||
"login": '''"cn"''', | |||
"info": { | |||
"display": "cn", | |||
"email": "mail", | |||
"firstName": "givenName", | |||
"lastName": "sn" | |||
} | |||
}, | |||
"enabled": true | |||
} | } | ||
* Поиск пользователя в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений user.basedn и basedn. В примере это будет узел ou=users,dc=example,dc=com. Полный DN пользователя указывать в user.basedn не нужно (можно указать пустой или не указывать вообще) | * Поиск пользователя в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений user.basedn и basedn. В примере это будет узел ou=users,dc=example,dc=com. Полный DN пользователя указывать в user.basedn не нужно (можно указать пустой или не указывать вообще) | ||
Line 54: | Line 53: | ||
=== Добавление проверки по группе LDAP === | === Добавление проверки по группе LDAP === | ||
Принадлежность пользователя к группе определяется следующим образом: | Принадлежность пользователя к группе определяется следующим образом: | ||
* Формируется список всех возможных групп на основе | * Формируется список всех возможных групп на основе значения group.filter | ||
* Для каждой сформированной группы формируется список входящих в нее пользователей по следующему принципу: | * Для каждой сформированной группы формируется список входящих в нее пользователей по следующему принципу: | ||
** Каждое значение атрибута group.userMember (их может быть несколько) узла LDAP (соответствующего группе) однозначно идентифицирует некоторого пользователя | ** Каждое значение атрибута group.userMember (их может быть несколько) узла LDAP (соответствующего группе) однозначно идентифицирует некоторого пользователя | ||
Line 60: | Line 59: | ||
Для настройки проверки по группе целесообразно выполнить следующие действия: | Для настройки проверки по группе целесообразно выполнить следующие действия: | ||
* Определиться с узлом в LDAP, относительно которого будет производится поиск групп (поле group.basedn). Поиск групп в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений group.basedn и basedn. В примере это будет узел ou=svacer_groups,ou=groups,dc=example,dc=com | * Определиться с узлом в LDAP, относительно которого будет производится поиск групп (поле group.basedn). Поиск групп в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений group.basedn и basedn. В примере это будет узел ou=svacer_groups,ou=groups,dc=example,dc=com | ||
* Для Active Directory в поле filter можно указать, например, (&(objectCategory=Group)(cn=dep_ivanov)), что будет означать группу dep_ivanov. | * Для Active Directory в поле filter можно указать, например, (&(objectCategory=Group)(cn=dep_ivanov)), что будет означать группу dep_ivanov. | ||
* Изменить конфигурационный файл | * Изменить конфигурационный файл следующим образом: | ||
{ | |||
"name": "test_ldap", | |||
... | |||
}, | |||
"user": { | |||
... | |||
'''"group": "dn"''', | |||
}, | |||
'''"useGroup": true,''' | |||
'''"group": {'''' | |||
'''"basedn": "ou=svacer_groups,ou=groups",''' | |||
'''"filter": "(&(objectClass=groupOfNames)(cn=*))",''' | |||
'''"userMember": "member",''' | |||
'''"display":"cn",''' | |||
}, | |||
"enabled": true | |||
} | |||
* Перезапустить Svacer | * Перезапустить Svacer | ||
* Убедиться, что возможен вход пользователей, состоящих в группе/группах, и не возможен вход пользователей, не состоящих в группе/группах. | * Убедиться, что возможен вход пользователей, состоящих в группе/группах, и не возможен вход пользователей, не состоящих в группе/группах. | ||
Line 85: | Line 85: | ||
* Добавить нужные группы в Svacer. Например admins и users. | * Добавить нужные группы в Svacer. Например admins и users. | ||
* Определиться в каком атрибуте LDAP группы будет хранится имя роли (все сравнения будут чувствительны к регистру). Например, пусть это будет атрибут cn | * Определиться в каком атрибуте LDAP группы будет хранится имя роли (все сравнения будут чувствительны к регистру). Например, пусть это будет атрибут cn | ||
* Изменить конфигурационный файл следующим образом | * Изменить конфигурационный файл следующим образом | ||
{ | |||
"name": "test_ldap", | "name": "test_ldap", | ||
... | |||
"user": { | "user": { | ||
... | |||
}, | |||
''' "useGroup": true, ''' | |||
''' "group": { ''' | |||
''' "basedn": "ou=svacer_groups,ou=groups", ''' | |||
''' "filter": "(&(objectClass=groupOfNames)(cn=*))", ''' | |||
''' "userMember": "member", ''' | |||
''' "display": "cn", ''' | |||
''' "svacerRole": "cn" ''' | |||
''' }, ''' | |||
"enabled": true | |||
} | |||
* Убедиться, что пользователю назначаются роли, выполнив команду в cli (требуются учетные данные администратора для проверки; по умолчанию admin | |||
* Убедиться, что пользователю назначаются роли, выполнив команду в cli (требуются учетные данные администратора для проверки; по умолчанию admin / admin). Для проверки привязки ролей Svacer к пользователю Loginok можно использовать следующую команду: | |||
./svacer ldap sync_roles --login loginok --host 127.0.0.1 --port 8080 --user admin --password admin --server test_ldap | ./svacer ldap sync_roles --login loginok --host 127.0.0.1 --port 8080 --user admin --password admin --server test_ldap | ||
Вывод должен быть следующий: | Вывод должен быть следующий: | ||
Line 113: | Line 114: | ||
=== Добавление серверов LDAP, работающих по TLS === | === Добавление серверов LDAP, работающих по TLS === | ||
* Изменить конфигурационный файл | * Изменить конфигурационный файл следующим образом: | ||
{ | |||
"name": "test_ldap", | |||
"basedn": "dc=example,dc=com", | |||
"connection": { | |||
"url": "'''ldaps'''://ldap1.example.com:'''636'''", | |||
"connectAs": "cn=admin,dc=example,dc=com", | |||
"password": "12345678", | |||
"ignoreCertCheck": '''true''' | |||
}, | |||
"user": { | |||
... | |||
}, | |||
... | |||
"enabled": true | |||
} | |||
* Убедиться, что возможен вход пользователем LDAP. Для проверки можно использовать утилиту curl, как указано в примере с основными настройками | * Убедиться, что возможен вход пользователем LDAP. Для проверки можно использовать утилиту curl, как указано в примере с основными настройками | ||
* Для проверки сертификата LDAP сервера добавить сертификат CA (например ldap.crt) в папку с сертификатами (например, /etc/ssl/certs/) и внести следующие изменения в конфигурационный файл: | * Для проверки сертификата LDAP сервера добавить сертификат CA (например ldap.crt) в папку с сертификатами (например, /etc/ssl/certs/) и внести следующие изменения в конфигурационный файл: | ||
Line 142: | Line 144: | ||
}, | }, | ||
"user": { | "user": { | ||
... | |||
}, | }, | ||
... | |||
}, | }, | ||
"enabled": true | "enabled": true | ||
Line 154: | Line 156: | ||
=== Добавление резервных серверов LDAP === | === Добавление резервных серверов LDAP === | ||
* Добавить в конфигурационный файл резервные сервера в поле mirrors: | * Добавить в конфигурационный файл резервные сервера в поле mirrors: | ||
{ | |||
"name": "test_ldap", | |||
"basedn": "dc=example,dc=com", | |||
"connection": { | |||
"url": "ldaps://ldap1.example.com:636", | |||
'''"mirrors": ["ldaps://ldap2.example.com:636","ldaps://ldap3.example.com:636"],''' | |||
"connectAs": "cn=admin,dc=example,dc=com", | |||
"password": "12345678", | |||
... | |||
}, | |||
"user": { | |||
... | |||
}, | |||
... | |||
"enabled": true | |||
} | |||
* Проверить, что вход пользователя LDAP в систему возможен | * Проверить, что вход пользователя LDAP в систему возможен | ||
* Изменить значение в URL на любое (чтобы сервер, указанный в URL, был не доступен) | * Изменить значение в URL на любое (чтобы сервер, указанный в URL, был не доступен) | ||
Line 175: | Line 178: | ||
* Убедиться, что вход пользователя LDAP в систему возможен | * Убедиться, что вход пользователя LDAP в систему возможен | ||
* Поменять значение в URL на верное | * Поменять значение в URL на верное | ||
=== Возможные ошибки конфигурации === | === Возможные ошибки конфигурации === | ||
В случае ошибки входа пользователя в систему сервер выводит текстовые сообщения, указывающие на причину ошибки. Наиболее полную информацию об ошибке можно видеть, использовав флаг | В случае ошибки входа пользователя в систему сервер выводит текстовые сообщения, указывающие на причину ошибки. Наиболее полную информацию об ошибке можно видеть, использовав флаг <code>--debug</code> при запуске сервера Svacer. Логи сервера можно посмотреть в GUI Svacer из под пользователя с правами администратора в разделе '''Settings/Server information'''. Ниже приводится таблица с перечислением возможных ошибок входа пользователя LDAP в систему. | ||
Сообщения об ошибках и их возможные причины | '''Сообщения об ошибках и их возможные причины''' | ||
{| class="wikitable" style="margin:auto" | {| class="wikitable" style="margin:auto" | ||
|- | |- | ||
!Действие !! Сообщение !! Причина !! Решение | !Действие !! Сообщение !! Причина !! Решение | ||
|- | |- | ||
| Вход в систему || LDAP server unavailable ||1.Нет соединения с сервером | | Вход в систему || LDAP server unavailable || 1. Нет соединения с сервером<br/>2. Неверные учетные данные для соединения с сервером || Проверить доступность сервера LDAP с хоста, на котором установлен Svacer. См. утилиту ldapsearch | ||
|- | |- | ||
| Вход в систему || LDAP user is not in group||Пользователь не состоит в заданной конфигурацией группе/группах||Проверить поля user.group, group.filter | | Вход в систему || LDAP user is not in group||Пользователь не состоит в заданной конфигурацией группе/группах||Проверить поля user.group, group.filter, group.userMember. В списке групп, полученных с использованием group.filter должна быть хотя бы одна группа, в которую входит пользователь | ||
|- | |- | ||
| Вход в систему || LDAP group not found. Check configuration || Во время поиска групп, подходящих под фильтр, не | | Вход в систему || LDAP group not found. Check configuration || Во время поиска групп, подходящих под фильтр, не найдено ни одной группы || Проверить значение поля group.filter и значения basedn, group.basedn | ||
|- | |- | ||
| Вход в систему || LDAP user not allowed or not found || Во время поиска пользователей, подходящих под фильтр, не найдено ни одного пользователя || Проверить значение поля user.filter и значения basedn, user.basedn | | Вход в систему || LDAP user not allowed or not found || Во время поиска пользователей, подходящих под фильтр, не найдено ни одного пользователя || Проверить значение поля user.filter и значения basedn, user.basedn | ||
Line 194: | Line 197: | ||
| Вход в систему || too much record for user ('%s') found || Поиск пользователя в LDAP с указанными в конфигурации парамтерами дал несколько записей|| Проверить значение поля user.filter и значения basedn, user.basedn. Поиск всегда должен давать одну запись | | Вход в систему || too much record for user ('%s') found || Поиск пользователя в LDAP с указанными в конфигурации парамтерами дал несколько записей|| Проверить значение поля user.filter и значения basedn, user.basedn. Поиск всегда должен давать одну запись | ||
|- | |- | ||
| Запуск сервера || caCert source [%v] ignored || Ошибка поиска сертификатов по указанному шаблону || Проверить поле connection.caCertFiles конфигурации и убедится, что по | | Запуск сервера || caCert source [%v] ignored || Ошибка поиска сертификатов по указанному шаблону || Проверить поле connection.caCertFiles конфигурации и убедится, что по указанному в поле шаблону присутствуют сертификаты и к ним есть доступ (проверить права). Все пути должны быть абсолютными | ||
|- | |- | ||
|Запуск сервера || Server [%v] configuration has ignoreCertCheck=false, but no CA certs added. In this case LDAP auth may be unpossible || Ошибка конфигурации TLS. В результате обработки значений из поля connection.CaCertFiles не было добавлено ни одного сертификата. Это приводит к тому, что Svacer не может проверить сертификат LDAP сервера, а флаг ignoreCertCheck указан в значении false, что приведет к заведомо ошибочной проверке пользователя || Проверить поле connection.caCertFiles конфигурации и убедится, что по | |Запуск сервера || Server [%v] configuration has ignoreCertCheck=false, but no CA certs added. In this case LDAP auth may be unpossible || Ошибка конфигурации TLS. В результате обработки значений из поля connection.CaCertFiles не было добавлено ни одного сертификата. Это приводит к тому, что Svacer не может проверить сертификат LDAP сервера, а флаг ignoreCertCheck указан в значении false, что приведет к заведомо ошибочной проверке пользователя || Проверить поле connection.caCertFiles конфигурации и убедится, что по указанному в поле шаблону присутствуют сертификаты и к ним есть доступ (проверить права). Все пути должны быть абсолютными | ||
Все пути должны быть абсолютными | |||
|} | |} |
Revision as of 15:52, 17 May 2023
Пример конфигурации сервера Svacer для поддержки аутентификации по LDAP протоколу
Для упрощения настройки интеграции с LDAP сервером, процесс настройки можно разбить на этапы и переходить к следующему только если успешно завершен предыдущий этап. В первую очередь необходимо выяснить актуальные параметры подключения к ldap серверу:
- URL; Например ldap://10.11.12.13:389 или ldaps://10.11.12.13:636
- Учетные данные с которыми будет осуществляться подключение к LDAP серверу при каждой попытке входа пользователем; Например, login: cn=admin,dc=example,dc=com, пароль: 12345678
- Определиться с корнем LDAP дерева (базовый узел), относительно которого будут выполняться все операции; Например: dc=example,dc=com
- Проверить, что с указанными учетными данными возможно подключение к серверу LDAP и просмотр его содержимого с некоторого узла, расположенного ниже базового; Например, с узла ou=users,dc=example,dc=com для рассматриваемого примера. Проверить можно, например, используя следующую команду:
LDAPTLS_REQCERT=never ldapsearch -v -x -D cn=admin,dc=example,dc=com -w 12345678 -b ou=users,dc=example,dc=com -H ldaps://127.0.0.1:636
- для случая поддержки TLS, или
ldapsearch -v -x -D cn=admin,dc=example,dc=com -w 12345678 -b ou=users,dc=example,dc=com -H ldap://127.0.0.1:389
- для случая без поддержки TLS
- Определиться с атрибутом записи, по которой будет осуществляться вход. Например cn, mail или sAMAccountName
- Если используется Active Directory, целесообразно в качестве фильтра для поиска записей о пользователе указать значение (&(objectCategory=Person)(sAMAccountName=*))
Основные настройки LDAP
- Использовать следующий шаблон конфигурации, заменив текст, выделенный жирным, актуальными данными
{ "name": "test_ldap", "basedn": "dc=example,dc=com", "connection": { "url": "ldap://ldap1.example.com:389", "connectAs": "cn=admin,dc=example,dc=com", "password": "12345678" }, "user": { "basedn": "ou=users", "filter": "(&(objectClass=PosixAccount)(cn=*))", "login": "cn", "info": { "display": "cn", "email": "mail", "firstName": "givenName", "lastName": "sn" } }, "enabled": true }
- Поиск пользователя в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений user.basedn и basedn. В примере это будет узел ou=users,dc=example,dc=com. Полный DN пользователя указывать в user.basedn не нужно (можно указать пустой или не указывать вообще)
- Убедиться, что при старте сервера в логах присутствуют строки:
2023-04-24T12:35:44.650+0300 info Loading ldap configuration from file: ldap2.json 2023-04-24T12:35:44.650+0300 info LDAP server added: test_ldap
- Выполнить команду в cli, заменив хост и порт актуальными значениями
./svacer ldap servers --host 127.0.0.1 --port 8080
- Убедиться, что в выводе команды присутствуют записи вида:
Available LDAP servers list: Name: test_ldap Url: ldap://ldap1.example.com:389
- Убедиться, что возможен вход тестовым пользователем через cli:
curl -X POST --data '{"login":"test_login","password":"test_password","auth_type":"ldap","server":"test_ldap"}' 127.0.0.1:8080/api/public/login
Вывод должен быть вида:
{"token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2ODI5MzYxODcsImlhdCI6MTY4MjMzMTM4Nywicm9sZXMiOlsiYWRtaW5zIl0sInVzZXIiO ..."}
Добавление проверки по группе LDAP
Принадлежность пользователя к группе определяется следующим образом:
- Формируется список всех возможных групп на основе значения group.filter
- Для каждой сформированной группы формируется список входящих в нее пользователей по следующему принципу:
- Каждое значение атрибута group.userMember (их может быть несколько) узла LDAP (соответствующего группе) однозначно идентифицирует некоторого пользователя
- Пользователь входит в группу, если значение атрибута user.group пользователя входит в множество записей, полученных в пункте выше
Для настройки проверки по группе целесообразно выполнить следующие действия:
- Определиться с узлом в LDAP, относительно которого будет производится поиск групп (поле group.basedn). Поиск групп в каталоге LDAP будет производится от узла, DN которого является конкатенацией значений group.basedn и basedn. В примере это будет узел ou=svacer_groups,ou=groups,dc=example,dc=com
- Для Active Directory в поле filter можно указать, например, (&(objectCategory=Group)(cn=dep_ivanov)), что будет означать группу dep_ivanov.
- Изменить конфигурационный файл следующим образом:
{ "name": "test_ldap", ... }, "user": { ... "group": "dn", }, "useGroup": true, "group": {' "basedn": "ou=svacer_groups,ou=groups", "filter": "(&(objectClass=groupOfNames)(cn=*))", "userMember": "member", "display":"cn", }, "enabled": true }
- Перезапустить Svacer
- Убедиться, что возможен вход пользователей, состоящих в группе/группах, и не возможен вход пользователей, не состоящих в группе/группах.
Добавление привязки ролей Svacer к группам LDAP
- Добавить нужные группы в Svacer. Например admins и users.
- Определиться в каком атрибуте LDAP группы будет хранится имя роли (все сравнения будут чувствительны к регистру). Например, пусть это будет атрибут cn
- Изменить конфигурационный файл следующим образом
{ "name": "test_ldap", ... "user": { ... }, "useGroup": true, "group": { "basedn": "ou=svacer_groups,ou=groups", "filter": "(&(objectClass=groupOfNames)(cn=*))", "userMember": "member", "display": "cn", "svacerRole": "cn" }, "enabled": true }
- Убедиться, что пользователю назначаются роли, выполнив команду в cli (требуются учетные данные администратора для проверки; по умолчанию admin / admin). Для проверки привязки ролей Svacer к пользователю Loginok можно использовать следующую команду:
./svacer ldap sync_roles --login loginok --host 127.0.0.1 --port 8080 --user admin --password admin --server test_ldap
Вывод должен быть следующий:
SvacerUserID: 457039b4-4aef-4857-831d-1c080ea154d4 SvacerUserLogin: loginok LDAPUserDN: cn=loginok,ou=users,dc=example,dc=com Roles: [314e7571-706c-4463-9280-6a4eee03b42d] Links: [cn=admins,ou=svacer_groups,ou=groups,dc=example,dc=com -> admins (314e7571-706c-4463-9280-6a4eee03b42d)] Applied: false
Добавление серверов LDAP, работающих по TLS
- Изменить конфигурационный файл следующим образом:
{ "name": "test_ldap", "basedn": "dc=example,dc=com", "connection": { "url": "ldaps://ldap1.example.com:636", "connectAs": "cn=admin,dc=example,dc=com", "password": "12345678", "ignoreCertCheck": true }, "user": { ... }, ... "enabled": true }
- Убедиться, что возможен вход пользователем LDAP. Для проверки можно использовать утилиту curl, как указано в примере с основными настройками
- Для проверки сертификата LDAP сервера добавить сертификат CA (например ldap.crt) в папку с сертификатами (например, /etc/ssl/certs/) и внести следующие изменения в конфигурационный файл:
{ "name": "test_ldap", "basedn": "dc=example,dc=com", "connection": { "url": "ldaps://ldap1.example.com:636", "connectAs": "cn=admin,dc=example,dc=com", "password": "12345678", "ignoreCertCheck": false, "caCertFiles": ["/etc/ssl/certs/ldap.crt"] }, "user": { ... }, ... }, "enabled": true }
- Убедиться, что в логах сервера присутствуют записи вида:
2023-04-24T13:49:49.298+0300 info added 1 ca certs from ldap.crt
- Убедиться, что пользователь LDAP может зайти в систему
Добавление резервных серверов LDAP
- Добавить в конфигурационный файл резервные сервера в поле mirrors:
{ "name": "test_ldap", "basedn": "dc=example,dc=com", "connection": { "url": "ldaps://ldap1.example.com:636", "mirrors": ["ldaps://ldap2.example.com:636","ldaps://ldap3.example.com:636"], "connectAs": "cn=admin,dc=example,dc=com", "password": "12345678", ... }, "user": { ... }, ... "enabled": true }
- Проверить, что вход пользователя LDAP в систему возможен
- Изменить значение в URL на любое (чтобы сервер, указанный в URL, был не доступен)
- Перезапустить Svacer
- Убедиться, что вход пользователя LDAP в систему возможен
- Поменять значение в URL на верное
Возможные ошибки конфигурации
В случае ошибки входа пользователя в систему сервер выводит текстовые сообщения, указывающие на причину ошибки. Наиболее полную информацию об ошибке можно видеть, использовав флаг --debug
при запуске сервера Svacer. Логи сервера можно посмотреть в GUI Svacer из под пользователя с правами администратора в разделе Settings/Server information. Ниже приводится таблица с перечислением возможных ошибок входа пользователя LDAP в систему.
Сообщения об ошибках и их возможные причины
Действие | Сообщение | Причина | Решение |
---|---|---|---|
Вход в систему | LDAP server unavailable | 1. Нет соединения с сервером 2. Неверные учетные данные для соединения с сервером |
Проверить доступность сервера LDAP с хоста, на котором установлен Svacer. См. утилиту ldapsearch |
Вход в систему | LDAP user is not in group | Пользователь не состоит в заданной конфигурацией группе/группах | Проверить поля user.group, group.filter, group.userMember. В списке групп, полученных с использованием group.filter должна быть хотя бы одна группа, в которую входит пользователь |
Вход в систему | LDAP group not found. Check configuration | Во время поиска групп, подходящих под фильтр, не найдено ни одной группы | Проверить значение поля group.filter и значения basedn, group.basedn |
Вход в систему | LDAP user not allowed or not found | Во время поиска пользователей, подходящих под фильтр, не найдено ни одного пользователя | Проверить значение поля user.filter и значения basedn, user.basedn |
Вход в систему | too much record for user ('%s') found | Поиск пользователя в LDAP с указанными в конфигурации парамтерами дал несколько записей | Проверить значение поля user.filter и значения basedn, user.basedn. Поиск всегда должен давать одну запись |
Запуск сервера | caCert source [%v] ignored | Ошибка поиска сертификатов по указанному шаблону | Проверить поле connection.caCertFiles конфигурации и убедится, что по указанному в поле шаблону присутствуют сертификаты и к ним есть доступ (проверить права). Все пути должны быть абсолютными |
Запуск сервера | Server [%v] configuration has ignoreCertCheck=false, but no CA certs added. In this case LDAP auth may be unpossible | Ошибка конфигурации TLS. В результате обработки значений из поля connection.CaCertFiles не было добавлено ни одного сертификата. Это приводит к тому, что Svacer не может проверить сертификат LDAP сервера, а флаг ignoreCertCheck указан в значении false, что приведет к заведомо ошибочной проверке пользователя | Проверить поле connection.caCertFiles конфигурации и убедится, что по указанному в поле шаблону присутствуют сертификаты и к ним есть доступ (проверить права). Все пути должны быть абсолютными |