В компании исторически Домен делится на поддомены (DOMAIN.COM-> SUBDOMAIN1.DOMAIN.COM, SUBDOMAIN2.DOMAIN.COM)
Стандартная авторизация в Win приложениях сводится к указанию пользователя и поддомена (Пр. SUBDOMAIN1\mylogin SUBDOMAIN2\mylogin)
Однако в самом AD в данных пользователя хранится только имя пользователя (sAMAccountName) являющееся логином. Если использовать стандартные настройки Бэкенда для OTRS, то в качестве логина выступает как раз sAMAccountName. Такой вариант не удовлетворяет потребностей так как sAMAccountName уникален только в рамках поддомена.
Для решения проблемы в LDAP было добавлено поле uid для всех пользователей в которе был помещен идентификатор вида SubDomainName\sAMAccountName(пользователи уже привыкли к авторизации такого рода). Пользователь в системе авторизуется, а вот синхронизировать Бэкенд не получается!
При авторизации получаем собщение
Code: Select all
"Authentication succeeded, but no customer record is found in the customer backend. Please contact your administrator."
Code: Select all
[Notice][Kernel::System::CustomerAuth::LDAP::Auth] CustomerUser: subdomain\test (CN=Test T Test ,OU=TT,OU=CC,DC=domain,DC=com) authentication ok (REMOTE_ADDR: 127.0.0.1).
[Error][Kernel::System::CustomerUser::SetPreferences][493] No such user 'subdomain\test'!
Ну и на сладкое Конфиг
Code: Select all
$Self->{CustomerUser} = {
Name => 'LDAP Source',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'ad.domain.com',
BaseDN => 'DC=domain, DC=com',
SSCOPE => 'sub',
UserDN => 'CN=Ldap,CN=Users,DC=domain,DC=com',
UserPw => '***',
AlwaysFilter => '(objectclass=user)',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
Params => {
port => 389,
timeout => 120,
async => 0,
version => 3,
},
},
CustomerKey => 'uid',
CustomerID => 'userPrincipalName',
CustomerUserListFields => ['uid', 'cn', 'userPrincipalName'],
CustomerUserSearchFields => ['uid', 'cn', 'userPrincipalName'],
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
Map => [
[ 'UserFirstname' , 'Firstname' , 'givenname', 1, 1, 'var' ],
[ 'UserLastname' , 'Lastname' , 'sn' , 1, 1, 'var' ],
[ 'UserLogin' , 'Login' , 'uid' , 1, 1, 'var' ],
[ 'UserEmail' , 'Email' , 'mail' , 1, 1, 'var' ],
[ 'UserCustomerID', 'CustomerID', 'uid' , 0, 1, 'var' ],
],
};