16.03.18
Интеграция OTRS и Active Directory
Введение
При развертывании OTRS в корпоративном ИТ-ландшафте использование Active Directory (далее - AD) в качестве средства аутентификации и хранилища учетных записей безусловно, является лучшей практикой.
Active Directory может быть задействован для:
- Хранения учетных записей и аутентификации агентов
- Хранения учетных записей и аутентификации клиентов
- Маппинга групп безопасности
В Таблице 1 приведены сценарии использования внешних хранилищ учетных записей клиентов и агентов в зависимости от направлений предоставления ИТ-услуг.
| ИТ услуги предоставляются: | Хранилище агентов | Хранилище клиентов |
|---|---|---|
| Внешним потребителям (CRM-система отсутствует) | Внешнее (AD) | Внутреннее (база OTRS) |
| Внешним потребителям (клиенты ведутся в CRM-системе) | Внешнее (AD) | Внешняя база данных |
| Внутренним потребителям (подразделениям компании) | Внешнее (AD) | Внешнее (AD) |
- Нюансы ведения клиентов (customers) во внешней базе выходят за рамки настоящей статьи, этот вопрос достаточно хорошо освещен в официальной документации, раздел Using External backends.
- Конфигурационные параметры задаются в файле Kernel/Config.pm.
- Для получения дополнительной информации по синтаксису и настройкам необходимо обратить внимание на конфигурационный файл Kernel/Config/Defaults.pm.
-
Перед выполнением настроек необходимо получить нужные атрибуты LDAP. В Microsoft Windows Server используется утилита ldifde, например:
ldifde –f ldap.txt
Либо использовать инструментарий наподобие LDAP Explorer Tool или Apache Directory Studio. - Доступ OTRS к дереву LDAP осуществляется в режиме только чтения. Вы не сможете редактировать данные, извлеченные из Active Directory посредством OTRS.
Аутентификация пользователей (агентов)
Аутентификация агентов - модуль Kernel::System::Auth::LDAP.
$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'contoso.com';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=contoso,dc=com';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN'} = 'cn=otrs_agents,ou=OTRS,ou=Groups,dc=contoso,dc=com';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=otrs_user,ou=Other,OU=Services,dc=contoso,dc=com';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'otrs_password';
$Self->{'AuthModule::LDAP::AlwaysFilter'} = '';
$Self->{'AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};
Синхронизация агентов - модуль Kernel::System::Auth::Sync::LDAP. Применение данных настроек позволяет сократить число запросов к Active Directory и увеличивает скорость аутентификации агентов. Синхронизация данных выполнятся при первом входе агента в OTRS. $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = 'contoso.com';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=contoso, dc=com';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'cn=otrs_user,ou=Other,ou=Services,dc=contoso,dc=com';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'otrs_password';
$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
# DB -> LDAP
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
UserPhone => 'telephoneNumber',
UserTitle => 'title',
};
$Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
'users',
];
- SearchUserDN - Указать DN (Distinguished Name) учетной записи, под которой будет осуществляться обзор каталога LDAP.
- SearchUserPw - Пароль к учетной записи.
- AlwaysFilter - отбор агентов по фильтру, например: (&(objectclass=user)(mail=*)(!(userAccountControl:1.2.840.113556.1.4.803:=2))), имеют заполненный атрибут mail и не включены в отпределенную группу.
- UserSyncInitialGroups - Группа пользователей по-умолчанию
Маппинг групп пользователей (агентов)
Вы можете использовать группы пользователей Active Directory для включения агентов в соответствующие группы OTRS. Модуль - AuthSyncModule::LDAP::UserSyncGroupsDefinition
Пример 1. Пользователям (агентам), входящим в группу otrs_agents Active Directory, назначается группа users в OTRS.
$Self->{'AuthSyncModule::LDAP::UserSyncGroupsDefinition'} = {
'cn=otrs_agents,ou=OTRS,ou=Groups,dc=contoso,dc=com' => {
# otrs group
'users' => {
# permission
rw => 1,
move_into => 1,
create => 1,
note => 1,
owner => 1,
priority => 1,
ro => 1,
},
},
};
Пример 2. Пользователям, входящим в группу otrs_admins, назначаются сразу две группы OTRS: users и admins (блок указывается внутри блока UserSyncGroupsDefinition) 'cn=otrs_admins,ou=OTRS,ou=Groups,dc=contoso,dc=com' => {
# otrs group
'admin' => {
# permission
rw => 1,
ro => 1,
},
'users' => {
# permission
rw => 1,
move_into => 1,
create => 1,
note => 1,
owner => 1,
priority => 1,
ro => 1,
},
},
Пример 3. Пользователям, входящим в группу otrs_ro, назначается группа users с правами note и read only (блок указывается внутри блока UserSyncGroupsDefinition) 'cn=otrs_ro,ou=OTRS,ou=Groups,dc=contoso,dc=com' => {
'users' => {
# permission
rw => 0,
move_into => 0,
create => 0,
note => 1,
owner => 0,
priority => 0,
ro => 1,
},
}
Аутентификация и маппинг клиентов (customers)
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'contoso.com';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'dc=contoso,dc=com';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'cn=otrs_user,ou=Other,ou=Services,dc=contoso,dc=com';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'otrs_password';
$Self->{'CustomerUser'} = {
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'contoso.com',
BaseDN => 'DC=contoso,DC=com',
SSCOPE => 'sub',
UserDN =>'cn=otrs_user,ou=Other,ou=Services,dc=contoso,dc=com',
UserPw => 'otrs_password',
AlwaysFilter => '(&(samAccountType=805306368)(!(userAccountControl:1.2.840.113556.1.4.803:=2)))',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
},
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 10000,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
Map => [
# note: Login, Email and CustomerID needed!
[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var' ],
[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var' ],
[ 'UserLogin', 'Login', 'sAMAccountName', 1, 1, 'var' ],
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var' ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var' ],
[ 'UserPhone', 'Phone', 'telephoneNumber', 1, 0, 'var' ],
],
};
Распространенные ошибки
Некорректно указана учетная запись псевдопользователя для обзора дерева AD (SearchUserDN/SearchUserPw):
[Error][Kernel::System::Auth::LDAP::Auth][Line:192]:: First bind failed! 80090308: LdapErr: DSID-0C09042F, comment: AcceptSecurityContext error, data 52e, v2580
другие статьи
Смотреть всё01.02.18
OTRS 6 - первый взгляд
Буквально неделю назад OTRS AG порадовала пользователей и сообщество стабильным релизом 6-й версии системы - OTRS 6.0.1.
10 мин ⋅ Обучающие
14.03.18
Тюнинг производительности и нагрузочное тестирование OTRS
В статье собраны заметки как по нагрузочному тестированию OTRS, так и по различным способам, направленным на повышение производительности системы.
25 мин ⋅ Обучающие
26.02.18
Установка OTRS 6 в Google Cloud Platform (Debian 9, PostgreSQL)
Статья представляет собой руководство по развертыванию OTRS 6 с использованием Google Cloud Platform
15 мин ⋅ Обучающие
Обсудить проект
Добро пожаловать