CommuniGate Pro
+7 (499) 271-31-54 обратный звонок

Интеграция 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