Интеграция Active Directory и CommuniGate Pro
Скачать модуль для интеграции Active Directory и CommuniGate Pro можно здесь >>.
ADSync-CGP - это программа, которая обеспечивает интеграцию Active Directory и CommuniGate Pro. Приложение представляет собой службу Windows, которая отслеживает изменения записей в Active Directory и применяет данные изменения к аккаунтам CGPro. ADSync-CGP поддерживает отслеживание процедур создания записей и изменения значений их полей. Текущая версия утилиты поддерживает также обработку групп Active Directory с созданием групп в CGPro с соответствующими участниками. Связь с сервером CGPro поддерживается по протоколу PWD.
Утилиту необходимо установить на машину, входящую в домен Active Directory. После запуска утилита автоматически подключается к доменному контроллеру по протоколу LDAP, для подключения требуется доступ к стандартным портам протокола 389 и 636. По умолчанию используется шифрованное соединение. При необходимости адрес сервера Active Directory можно указать явно в параметре конфигурации ADAddress (см. ниже). Для доступа к Active Directory используются аутентификационные данные машины, на которой происходит запуск утилиты.
Для установки службы распакуйте архив и запустите файл установки ADSync-CGPSetup.msi. После установки зайдите в директорию приложения (по умолчанию C:\Program Files\CommuniGate Systems\ADSync-CGP) и откройте файл с расширением .config в текстовом редакторе.
Задайте следующие параметры в XML (опциональные параметры отмечены символом "*"):
ADBaseDN:
родительский DN (контейнер) для записей, изменения которых необходимо отслеживать (возможно задание нескольких DN с использованием символа "|" (символ pipe, без кавычек) в качестве разделителя);
*ADAddress:
адрес сервера Active Directory;
*ADCGDefaultDomainName:
имя домена, используемое по умолчанию для синхронизируемых пользователей CGPro, если не задано, то используется главный домен сервера;
*ADCGSyncAllOnStart:
значение "true" указывает на необходимость синхронизации (создания и/или обновления настроек пользователей) всех записей в контейнере/контейнерах, указанных в ADBaseDN, при каждом запуске службы;
ADAccountNameAttribute:
название атрибута записи пользователя, значение которого будет использоваться как имя аккаунта CGPro, может включать доменную часть (username@domain.name);
ADCGAccountStatus:
название атрибута записи пользователя, по значению которого утилита определяет, каким образом обрабатывать запись пользователя; для обработки данной записи утилитой ADSync-CGP значение атрибута должно включать одну из следующих подстрок:
- "enabled" - запись синхронизируется, для пользователя CGPro устанавливается набор услуг по умолчанию;
- "disabled" - доступ пользователя CGPro к сервисам отключается;
- "deleted" - доступ пользователя к сервисам отключается, имя пользователя CGPro изменяется на "deleted_<username>";
www.communigate.ru/communigatepro/russian/Accounts.html#Services
*ADCGStatusScript:
название синхронного скрипта, используемого для анализа необходимости обработки записей утилитой ADSync-CGP (см. подробное описание ниже);
*ADCGStatusFields:
список атрибутов для передачи в синхронный скрипт, перечисленных через запятую, указанный в ADCGStatusScript (см. подробное описание ниже);
*ADCGPostCreateScript:
название синхронного скрипта, выполняемого после создания пользователя на сервере CommuniGate Pro (см. подробное описание ниже);
*ADCGPostUpdateScript:
название синхронного скрипта, выполняемого после обновления настроек пользователя на сервере CommuniGate Pro (см. подробное описание ниже);
ADObjectClass:
название класса LDAP, записи которого считаются записями пользователя;
ADGroupNameAttribute:
название атрибута записи группы, значение которого будет использоваться для задания имени группы CGPro;
*ADGroupRealNameAttribute:
название атрибута RealName группы;
ADCGGroupStatus:
название атрибута статуса синхронизации группы (по аналогии с ADCGAccountStatus);
ADGroupObjectClass:
название класса групп (по аналогии с ADObjectClass);
*ADGroupSetReplyTo, ADGroupExpand, ADGroupRemoveAuthor, ADGroupEmailDisabled, ADGroupFinalDelivery, ADGroupRejectAutomatic, ADGroupRemoveToAndCc, ADGroupSignalDisabled, ADGroupMembersOnly, ADGroupCentralDirectory:
названия атрибутов, значения которых необходимо синхронизировать в соответствующие настройки групп CGPro:
www.communigate.ru/communigatepro/russian/Groups.html#Settings
CGProAddress:
адрес (доменное имя) сервера CGPro, можно задать несколько адресов через запятую;
*CGProPort:
порт протокола PWD сервера CGPro:
www.communigate.ru/communigatepro/russian/PWD.html
*CGProSSL:
значение "true" указывает на необходимость использования шифрования SSL/TLS для соединения с сервером CGPro:
www.communigate.ru/communigatepro/russian/PKI.html
*CGProDomain:
имя домена CGPro для создания шифрованного соединения, требуется, если адрес сервера и имя домена, на которое выписан SSL-сертификат, различаются;
*CGProSecureLogin:
значение "true" указывает на необходимость использования безопасного метода передачи пароля APOP при аутентификации сессии PWD:
www.communigate.ru/communigatepro/russian/Security.html#SASL
CGProUsername/CGProPassword:
имя/пароль пользователя CGPro с административными правами;
*LogDir,LogLevel,LogSizeLimit,LogRotationPeriod:
параметры записи логов утилиты ADSync-CGP (директория, уровень детализации, предельный объём файла в МБ, период ротации в днях);
*CacheSize:
размер кэша утилиты синхронизации (для увеличения производительности рекомендуется устанавливать достаточно большое значение порядка десятков тысяч).
После данных параметров в той же секции конфигурации вы можете задать необходимые соответствия для названий атрибутов и параметров аккаунтов, которые необходимо синхронизировать, например, givenName -> RealName, ou -> o и т.д.:
<add key="givenName" value="RealName" />
<add key="ou" value="o" />
www.communigate.ru/communigatepro/russian/Accounts.html#Settings
www.communigate.ru/communigatepro/russian/CentralDir.html#CustomSettings
После задания конфигурации вы можете найти и запустить службу стандартными средствами Панель управления -> Администрирование -> Службы. Журнал событий службы можно найти в Панели управления -> Администрирование -> Просмотр событий. Подробные логи утилиты по умолчанию сохраняются в директорию приложения (C:\Program Files\CommuniGate Systems\ADSync-CGP).
Интеграция с синхронным скриптом CGPro для проверки статуса синхронизации записей
Если задание статуса синхронизации записей в отдельном поле, указываемом в параметрах ADCGAccountStatus и ADCGGroupStatus, не представляется возможным или требует реализации дополнительной логики обработки, то для выполнения такого анализа можно использовать функционал синхронных скриптов CGPro:
www.communigate.ru/communigatepro/russian/CGPL.html#SyncScriptsИмя скрипта задаётся в параметре конфигурации утилиты ADCGStatusScript, а список атрибутов, которые необходимо передавать в скрипт, - в параметре ADCGStatusFields. Скрипт должен быть заранее загружен в безымянный интерфейс CGPro. Для каждой записи AD, обрабатываемой утилитой ADSync-CGP, данный скрипт вызывается с параметром в виде словаря CGPro:
www.communigate.ru/communigatepro/russian/Data.html#DictionaryСловарь параметров содержит обязательный ключ "#type#", значение по которому соответствует типу записи "account" или "group". Остальные ключи словаря соответствуют атрибутам, указанным в параметре конфигурации ADCGStatusFields, например:
<add key="ADCGStatusScript" value="adsync-status" /> <!-- параметр в файле конфигурации -->
<add key="ADCGStatusFields" value="employeeType,manager" /> <!-- параметр в файле конфигурации -->
{ "#type#"="account"; "employeeType"="worker"; "manager"="worker manager"; } // данные, передаваемые в синхронный скрипт adsync-status.scgp
Для обработки информации, предоставленной в параметре скрипта, может использоваться функционал CG/PL:
www.communigate.ru/communigatepro/russian/CGPL.htmlВ результате обработки синхронный скрипт должен установить в качестве результата своего выполнения одну из следующих строк:
enabled
- синхронизация записи включена;
disabled
- синхронизации записи включена, требуется отключение сервисов пользователя;
deleted
- синхронизация записи включена, требуется отключение сервисов и переименование имени пользователя в "deleted_<username>";
invalid
- синхронизация записи отключена.
Пример синхронного скрипта:
entry Main { var params = Vars().startParameter; if(!IsDictionary(params)) { // некорректный параметр запуска SetResult("invalid"); } if(params.("#type#") == "account") { // обработка данных пользователя if(params.employeeType == "worker" && params.manager == "worker manager") { SetResult("enabled"); } elif(params.employeeType == "former") { SetResult("deleted"); } else { SetResult("disabled"); } } elif(params.("#type#") == "group") { // обработка данных группы SetResult("enabled"); } else { // неизвестный тип объекта SetResult("invalid"); } }
Интеграция с синхронным скриптом CGPro для выполнения операций после создания и изменения настроек пользователя
Если после создания пользователей или изменения их настроек на сервере CGPro, выполняемого в процессе синхронизации, требуется какая-либо дополнительная обработка, то для данной задачи можно также использовать функционал синхронных скриптов CGPro. Имя скрипта, выполняемого после создания пользователя, задаётся в параметре конфигурации утилиты ADCGPostCreateScript. Имя скрипта, выполняемого после изменения настроек пользователя, задаётся в параметре конфигурации утилиты ADCGPostUpdateScript. В данный скрипт передаётся в качестве параметра словарь, содержащий имя пользователя по ключу "#accountName#" и заданные настройки по ключам, соответствующим названиям настроек:
{ "#accountName#"="myAccountName"; "setting1"="value1"; "setting2"="value2"; }
Результат работы скрипта игнорируется утилитой.
Пример синхронного скрипта, задающего псевдоним пользователя из настройки telephoneNumber созданного пользователя:
entry Main { var params = Vars().startParameter; if(!IsDictionary(params) || !IsString(params.("#accountName#"))) { SetResult("incorrect params"); } var accountName = params.("#accountName#"); var telephoneNumber = params.telephoneNumber; var error = ExecuteCLI("SETACCOUNTALIASES \"" + accountName + "\" (\"" + telephoneNumber + "\")"); if(error) { SetResult("failed to set account aliases"); } SetResult("success"); }
Для получения более подробной информации пишите на support@communigate.ru