Введение

VSA поддерживает аутентификацию через LDAP/AD.

При входе в VSA пользователи используют свой логин LDAP/AD без указания домена, например, IV.Petrov.

Создание пользователей LDAP/AD

Существует 3 варианта создания пользователя LDAP/AD в VSA:

  1. Пользователем самостоятельно
  2. Вручную администратором
  3. Посредством импорта (находится в разработке)

Создание пользользователя самим пользователем

  1. Пользователь переходит на страницу входа VSA
  2. Пользователь вводит свой логин/пароль от LDAP/VSA
  3. Если логин/пароль верные, то VSA автоматически создает пользователя с таким логином/паролем в своем хранилище
  4. Созданному пользователю назначаются права по умолчанию

Вручную администратором

  1. Администратор создает пользователя в VSA с таким же логином как в LDAP. 
  2. Администратор задает случайный пароль для этого пользователя.
  3. Администратор назначает необходимые права пользователю.
  4. Пользователь переходит на страницу входа VSA
  5. Пользователь вводит свой логин/пароль от LDAP/VSA
  6. Если логин/пароль верные, то пользователь успешно входит в VSA.
  7. При успешном входе в VSA случайный пароль, заданный администратором, перезаписывается на пароль из LDAP/VSA.

Импорт пользователей (находится в разработке)

Импорт пользователей описан в разделе про импорт.

Права по умолчанию

При автоматическом создании самим пользователем и при импорте назначаются права по умолчанию:

  1. Создание проектов
  2. Просмотр проектов
  3. Редактирование проектов
  4. Создание скриптов
  5. Просмотр скриптов
  6. Редактирование скриптов
  7. Создание списков ключевых слов
  8. Просмотр списков ключевых слов
  9. Редактирование списков ключевых слов
  10. Создание шаблонов фильтров поиска
  11. Просмотр шаблонов фильтров поиска
  12. Редактирование шаблонов фильтров поиска
  13. Создание шаблонов экспорта
  14. Просмотр шаблонов экспорта
  15. Редактирование шаблонов экспорта
  16. Загрузка записей

Создание групп LDAP/AD

Как таковой связи между группами VSA и группами LDAP/AD нет.

Но есть возможность импортировать группы и вхождение пользователей в группы посредством импорта.

Описано в разделе про импорт.

Импорт (находится в разработке)

Чтобы облегчить задачу создания пользователей и групп при внедрении VSA, существует механизм импорта.

Импорт делится на 3 операции:

  1. Импорт пользователей
  2. Импорт групп
  3. Импорт вхождений пользователей в группы

Импорт пользователей

Мастер импорта состоит из двух шагов:

  1. Выбор пользователей для импорта. Администратору будет предложен список для импорта, необходимо будет отметить пользователей, которые должны быть импортированы.
  2. Произвести непосредственный импорт, по окончании которого будет продемонстрирован отчет об импорте.

Импорт групп

Мастер импорта состоит из двух шагов:

  1. Выбор групп для импорта. Администратору будет предложен список для импорта, необходимо будет отметить группы, которые должны быть импортированы.
  2. Произвести непосредственный импорт, по окончании которого будет продемонстрирован отчет об импорте.

Импорт вхождений пользователей в группы

Мастер импорта состоит из двух шагов:

  1. Выбор вхождений для импорта. Администратору будет предложен список пользователей и их групп для импорта, необходимо будет отметить вхождения, которые должны быть импортированы.
  2. Произвести непосредственный импорт, по окончании которого будет продемонстрирован отчет об импорте.

Конфигурация VSA для работы с LDAP/AD

Чтобы включить вход в VSA через LDAP / Active Directory, нужно сделать следующие настройки:

vsa-server.properties
# LDAP (a.k.a. Active Directory) Settings
# e.g. ldap://voisi.com:389
ldap.url=
# e.g. cn=admin,dc=voisi,dc=com
ldap.adminUserDn=
# e.g. admin
ldap.adminUserPassword=
# e.g. ou=users,dc=voisi,dc=com
ldap.userDnPattern=
# e.g. sAMAccountName
# NOTE: sAMAccountName seems to be a good default setting for Active Directory
for OpenLDAP, use uid
ldap.usernameField=
# e.g. user
# NOTE: user seems to be a good default setting for Active Directory
for OpenLDAP, use inetOrgPerson
ldap.userObjectClass=user
# e.g. group
# NOTE: group seems to be a good default setting for Active Directory
for OpenLDAP, use groupOfNames
ldap.groupObjectClass=
# Required true for AD membership because AD group refers to user by 'cn' attribute instead of 'sAMAccountName'
ldap.memberNameResolveRequired=
Параметр
Описание

Значение

по умолчанию

Используется

при аутентификации

Используется

при импорте

ldap.url

URL ldap-каталога в формате ldap://<хост>:<порт>


VV
ldap.adminUserDn

Путь до служебного пользователя.

Для AD формат в виде электронной почты <логин>@<домен>.

Для остальных LDAP-каталогов может быть представлен в виде полного пути до учетной записи,

например, cn=admin,dc=voisi,dc=com


VV
ldap.adminUserPasswordПароль служебной учетной записи
VV
ldap.userDnPattern

Путь до организационного юнита, где располагаются все пользователи,

которые будут ходить в VSA, например, ou=Users,dc=voisi,dc=com


VV
ldap.usernameField

Атрибут пользователя, отвечающий за логин.

Для AD - sAMAccountName.

Для прочих LDAP - чаще всего uid.

sAMAccountNameVV
ldap.userObjectClass

Класс LDAP, отвечающий за пользователя.

Для AD - user.

Для прочих LDAP - чаще всего inetOrgPerson.

user
V
ldap.groupObjectClass

Класс LDAP, отвечающий за группу.

Для AD - group.

Для прочих LDAP - чаще всего groupOfNames.

group
V
ldap.memberNameResolveRequired

Используется только для AD, должно быть выставлено в true.

Для прочих LDAP должно быть выставлено значение false.

true
V

Особое внимание при заполнении ldap.userDnPattern стоит обратить на префикс перед названием контейнера. Чаще всего они бывают двух видов: "OU" или "CN".

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

Некоторые данные в AD могут лежать по ссылкам, поэтому может возникать `PartialResultException: Unprocessed Continuation Reference(s)`:
https://stackoverflow.com/questions/16412236/how-to-resolve-javax-naming-partialresultexception
https://stackoverflow.com/questions/37486159/springs-ldaptemplate-search-partialresultexception-unprocessed-continuation-r
Для этого нужно "сузить" путь до пользователей `ldap.userDnPattern`, например, вместо `DC=voisi,DC=com` указать `CN=Users,DC=voisi,DC=com`.

Пример конфигурации для AD:

ldap.url=ldap://44.33.22.11:389
ldap.adminUserDn=root@voisi.com
ldap.adminUserPassword=********
ldap.userDnPattern=CN=Users,DC=voisi,DC=com
ldap.usernameField=sAMAccountName
ldap.userObjectClass=user
ldap.groupObjectClass=group
ldap.memberNameResolveRequired=true

Пример конфигурации для прочих LDAP:

ldap.url=ldap://192.168.99.100:389
ldap.adminUserDn=cn=admin,dc=example,dc=org
ldap.adminUserPassword=admin
ldap.userDnPattern=dc=example,dc=org
ldap.usernameField=uid
ldap.userObjectClass=inetOrgPerson
ldap.groupObjectClass=groupOfNames
ldap.memberNameResolveRequired=false

Служебному пользователю достаточно прав на чтение пользователей каталога.