LDAP configuration: Difference between revisions
Chernykov sv (talk | contribs) |
Chernykov sv (talk | contribs) No edit summary |
||
Line 6: | Line 6: | ||
* Определиться с корнем LDAP дерева (базовый узел), относительно которого будут выполняться все операции; Например: dc=example,dc=com | * Определиться с корнем LDAP дерева (базовый узел), относительно которого будут выполняться все операции; Например: dc=example,dc=com | ||
* Проверить, что с указанными учетными данными возможно подключение к серверу LDAP и просмотр его содержимого с некоторого узла, расположенного ниже базового; Например, с узла ou=users,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 | * Определиться с атрибутом записи, по которой будет осуществляться вход. Например cn, mail или sAMAccountName | ||
* Если используется Active Directory, целесообразно в качестве фильтра для поиска записей о пользователе указать значение (&(objectCategory=Person)(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 ..."} |
Revision as of 15:46, 16 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 ..."}