Active Directory¶
Синхронизация учетных записей пользователей "Первой Формы" с ActiveDirectory (AD) решает сразу две задачи:
1. Дает возможность использовать Windows-аутентификацию, при которой для входа в "Первую Форму" используется тот же логин\пароль, что и для входа в Windows при включении компьютера. Пользователям не придется запоминать и вводить еще одну пару логин\пароль, что уменьшает вероятность ошибок и повышает комфортность работы.
2. Упрощает администрирование системы "Первая Форма", избавляя администратора от дублирования операций по добавлению\удалению пользователей и орг. единиц. Таким образом сокращаются трудозатраты и уменьшается вероятность ошибок, автоматически поддерживается актуальность данных.
Возможности и ограничения¶
1. Обмен данными производится только в одну сторону — из ActiveDirectory в "Первую Форму".
2. В синхронизации могут участвовать учетные записи пользователей, орг. единицы и группы.
3. В штатном режиме синхронизация выполняется в соответствии с расписанием задания ADSyncJob (по умолчанию — ежедневно в 20 часов). Возможен и ручной запуск задания вне расписания.
4. В зависимости от настроек синхронизации, в процессе обмена данными могут выполняться следующие действия:
-
создание новых орг. единиц и учетных записей пользователей,
-
внесение изменений по существующим записям (например, при смене фамилии, переезде в другой офис или переводе в другое подразделение),
-
удаление устаревших записей (например, уволившихся сотрудников и упраздненных должностей),
-
добавление и удаление пользователей из состава групп.
5. Учетные записи пользователей синхронизируются по уникальным идентификаторам SID, который берется из ActiveDirectory и записывается в профиль пользователя.
6. "Первая Форма" может поддерживать синхронизацию одновременно с несколькими доменами ActiveDirectory.
- Логин пользователя должен быть уникальным в рамках приложения "Первая Форма". При синхронизации с несколькими доменами ActiveDirectory необходимо следить за тем, чтобы логины в разных доменах не повторялись. Если это обеспечить невозможно, необходимо выгружать логины в формате Domain\Nick (это указывается в настройках синхронизации).
8. В логинах и паролях "Первой Формы" запрещено использовать символы # и &. При попытке нарушить это условие в процессе синхронизации возникает ошибка.
9. Соответствия полей между "Первой Формой" и ActiveDirectory настраиваются с помощью маппинга. Особенности синхронизации аватаров и часовых поясов пользователей описаны в настройках синхронизации.
10. В "Первой Форме" каждая орг. единица имеет тип и уровень, по которым строится иерархия (например: департамент, отдел, должность). Синхронизация орг.структуры возможна, только если в ActiveDirectory орг. структура также имеет четкую иерархию, и каждый тип орг. единицы в ActiveDirectory, имеющий свой набор атрибутов, может быть однозначно сопоставлен типу орг. структуры в "Первой Форме". Например, Подразделение в ActiveDirectory всегда соответствует Отделу в "Первой Форме" и т.п.
- Должность обязательно должна быть частью орг. структуры как в "Первой Форме", так и в ActiveDirectory. Без этого синхронизация орг. структуры невозможна.
12. Учетные записи пользователей могут синхронизироваться без орг. структуры. Орг. структура не может синхронизироваться без учетных записей пользователей.
13. Группы в "Первой Форме" и ActiveDirectory могут быть автоматически сопоставлены по именам. Также возможно ручное сопоставление групп.
14. При синхронизации состава групп пользователи, которые есть в группе системе "Первая форма", но которых нет в соответствующей группе в ActiveDirectory, удаляются из группы в системе "Первая Форма".
15. В ActiveDirectory могут использоваться динамические группы пользователей, которые автоматически включают\исключают пользователей в зависимости от параметров учетной записи. Синхронизация динамических групп пользователей с "Первой Формой" невозможна.
16. Вход в систему через Active Directory возможен по сертификату SSL.
17. Каждые 15 минут запускается проверка аутентификации активных пользователей с помощью задания по таймеру UserAuthenticationProviderVerificationJob.
18. В системе обеспечена защита от использования refresh-токенов, выданных до смены пароля в Active Directory. При любом изменении пароля в AD фоновый процесс автоматически определяет этот факт и устанавливает в базе данных новую метку времени, начиная с которой все ранее выданные access- и refresh-токены становятся недействительными. После смены пароля попытка использования старого refresh-токена для получения новой пары access- и refresh-токенов завершается ошибкой с кодом 401 (Unauthorized), что требует от пользователя повторного ввода актуальных учетных данных для входа в систему.
Предварительная подготовка¶
Для синхронизации с Active Directory необходимо:
1. Адрес домена.
2. Системная учетная запись.
3. Сервер с приложением должен находиться в домене или на DNS-сервере, который указан в сетевом адаптере. Должна быть настроена зона для этого домена.
Последовательность действий при настройке синхронизации с AD¶
1. Настройте сервис ActiveDirectory. Убедитесь, что сервис активен (флажок Активен включен).
2. Настройте провайдера аутентификации ActiveDirectory на основе этого сервиса. Убедитесь, что провайдер активен (флажок Активен включен).
-
Настройте параметры синхронизации для сервиса. Убедитесь, что настройки активны (флажок Активен быть включен).
-
Выгрузите или свяжите учетные записи пользователей по уникальным идентификаторам SID.
Возможны два варианта первоначальной синхронизации:
-
если в "Первой Форме" еще не заведены учетные записи пользователей, то они выгружаются из AD вместе с их SID-ами. Выберите нужные контейнеры AD, и данные из них будут перенесены в "Первую Форму" в соответствии с настройками синхронизации. Процедура выгрузки описана здесь (кнопка Выгрузить из AD).
-
если в "Первой Форме" уже есть учетные записи пользователей (заведены вручную, выгружены из 1С или загружены иным способом, например, из Excel), то их надо связать по SID-ам с записями в AD. Сопоставление учетных записей в AD и "Первой Форме" выполняется автоматически на основе логинов. Вам достаточно выбрать те учетные записи, которые еще не связаны и которые в дальнейшем надо синхронизировать, и нужные SID-ы будут автоматически проставлены. Процедура установления связи пользователей с AD описана здесь (кнопка Связь с AD).
5. Настройте синхронизацию групп пользователей.
В "Первой Форме" для предоставления прав доступа пользователи объединяются в группы (подробнее об этом написано здесь). Если группы в AD сформированы по тем же принципам, по которым предполагается создавать их в "Первой Форме" (например, в обеих системах группы отражают функциональные обязанности сотрудников), то имеет смысл синхронизировать их. В этом случае новые пользователи будут сразу распределяться в нужные группы и получать соответствующие права.
Для связи групп, как и для связи пользователей, используется SID. Процесс синхронизации описан здесь.
Удаление устаревших записей¶
Для настройки увольнения пользователя при деактивации в AD необходимо:
1. Переместить пользователя в отдельную организационную единицу OU (к примеру, Inactive Users или Disabled Users).
2. В расширенные свойства пользователя добавить параметр distinguishedName, в которое задается значение из одноименного атрибута в AD. Формат значения:
CN=Фамилия Имя Отчество,OU=Disabled Users, DC=domen,DC=aaa
Пример:
"CN=Ivanov Ivan,OU=Fund,OU=Users,OU=Foundation,DC=company,DC=local" .
3. Вычислить всех пользователей, у которых в расширенном свойстве есть значения указанных организационныйх единиц и уволить их.
Вычисление может осуществляться несколькими способами:
Способ 1:
В "Первой Форме" настраивается публикация, которая выполняет пакет действий:
-
Удалить лицензию пользователя
-
Уволить пользователя
Увольняемый пользователь в смарт-действии определяется с помощью TSQL-выражения.
Пример:
SELECT u.UserID FROM UserInfoExtValues ui with(nolock)
JOIN Users u with(nolock) ON u.UserID = ui.UserID
WHERE
Value like '%OU=Dismissed Users%' //пользователь перемещается в OU "DismissedUsers"
Способ 2:
Создается общее циклическое смарт-расписание, которое увольняет пользователей, входящих в специально созданную группу для деактивации. Эта группа должна быть синхронизирована с AD.
Способ 3:
В расширенные свойства пользователя добавить синхронизацию из AD параметра userAccountControl. Параметр представляет из себя число - "битовую маску", в котором в закодированы признаки отключения и увольнения пользователя в AD. Например, стандартные значения для уволенных: 514 или 66050.
Затем создать общее смарт-расписание с действиями Удалить лицензию пользователя и Уволить пользователя. В параметры, принимающие список пользователей, необходимо передать следующий скрипт/.
SELECT u.userid
FROM Users as u
JOIN userinfoextvalues as ue
ON u.userid = ue.userid
WHERE ue.infoextid = 19 /* расширенное свойство пользователя, в которое настроена загрузка значения UserAccountControl из AD/*/
AND ue.intvalue IN (514, 66050) /*типовые значения UserAccountControl для уволенных*/
AND u.isfired_2 = 0
/*
Атрибут UserAccountControl представляет собой битовую маску:
NORMAL_ACCOUNT (512) + DONT_EXPIRE_PASSWORD (65536) + ACCOUNTDISABLE (2) = 66050
NORMAL_ACCOUNT (512) + ACCOUNTDISABLE (2) = 514
*/