LDAP configuration: Difference between revisions

From Svacer Wiki
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 для рассматриваемого примера. Проверить можно, например, используя следующую команду:
<blockquote>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</blockquote> для случая поддержки TLS
  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, или  
<blockquote>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 </blockquote> для случая без поддержки 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 ..."}