Добавил в Config.pm два бэкенда для авторизации клиентов (DB и LDAP)
В админке видно и тех и других, при создании новой заявки агент может их выбирать, данные все подставляются.
вот что добавлено в Config.pm
Code: Select all
## 1. Customer user backend: DB
$Self->{CustomerUser1} = {
Name => 'Customer Database',
Module => 'Kernel::System::CustomerUser::DB',
Params => {
Table => 'customer_user',
},
CustomerKey => 'login',
CustomerID => 'customer_id',
CustomerValid => 'valid_id',
CustomerUserListFields => ['first_name', 'last_name', 'email'],
CustomerUserSearchFields => ['login', 'last_name', 'customer_id'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['email'],
CustomerUserNameFields => ['title','first_name','last_name'],
CustomerUserEmailUniqCheck => 1,
Map => [
[ 'UserTitle', 'Title', 'title', 1, 0, 'var', '', 0 ],
[ 'UserFirstname', 'Firstname', 'first_name', 1, 1, 'var', '', 0 ],
[ 'UserLastname', 'Lastname', 'last_name', 1, 1, 'var', '', 0 ],
[ 'UserLogin', 'Username', 'login', 1, 1, 'var', '', 0 ],
[ 'UserPassword', 'Password', 'pw', 0, 0, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'email', 1, 1, 'var', '', 0 ],
[ 'UserCustomerID', 'CustomerID', 'customer_id', 0, 1, 'var', '', 0 ],
[ 'UserPhone', 'Phone', 'phone', 1, 0, 'var', '', 0 ],
[ 'UserFax', 'Fax', 'fax', 1, 0, 'var', '', 0 ],
[ 'UserMobile', 'Mobile', 'mobile', 1, 0, 'var', '', 0 ],
[ 'UserStreet', 'Street', 'street', 1, 0, 'var', '', 0 ],
[ 'UserZip', 'Zip', 'zip', 1, 0, 'var', '', 0 ],
[ 'UserCity', 'City', 'city', 1, 0, 'var', '', 0 ],
[ 'UserCountry', 'Country', 'country', 1, 0, 'var', '', 0 ],
[ 'UserComment', 'Comment', 'comments', 1, 0, 'var', '', 0 ],
[ 'ValidID', 'Valid', 'valid_id', 0, 1, 'int', '', 0 ],
],
Selections => {
UserTitle => {
'Mr.' => 'Mr.',
'Mrs.' => 'Mrs.',
},
},
};
# 2. Customer user backend: LDAP
$Self->{CustomerUser2} = {
Name => 'LDAP Datasource',
Module => 'Kernel::System::CustomerUser::LDAP',
Params => {
Host => 'office.бла.бла-бла.ru',
BaseDN => 'dc=office,dc=бла,dc=бла-бла,dc=ru',
SSCOPE => 'sub',
UserDN => 'cn=otrs,cn=Users,dc=office,dc=бла,dc=бла-бла,dc=ru',
UserPw => 'pas',
SourceCharset => 'utf-8',
DestCharset => 'utf-8',
Params => {
port => 389,
timeout => 120,
async => 0,
version => 3,
},
},
CustomerKey => 'userPrincipalName',
CustomerID => 'mail',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['userPrincipalName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
CustomerUserExcludePrimaryCustomerID => 0,
AdminSetPreferences => 0,
AdminSetPreferences => 0,
Map => [
[ 'UserTitle', 'Title', 'title', 1, 0, 'var', '', 0 ],
[ 'UserFirstname', 'Firstname', 'givenname', 1, 1, 'var', '', 0 ],
[ 'UserLastname', 'Lastname', 'sn', 1, 1, 'var', '', 0 ],
[ 'UserLogin', 'Username', 'userPrincipalName', 1, 1, 'var', '', 0 ],
[ 'UserEmail', 'Email', 'mail', 1, 1, 'var', '', 0 ],
[ 'UserCustomerID', 'CustomerID', 'mail', 0, 1, 'var', '', 0 ],
[ 'UserPhone', 'Phone', 'telephonenumber', 1, 0, 'var', '', 0 ],
[ 'UserAddress', 'Address', 'postaladdress', 1, 0, 'var', '', 0 ],
[ 'UserComment', 'Comment', 'description', 1, 0, 'var', '', 0 ],
],
};
Чтобы начал авторизовывать клиентов из LDAP дописал следующее:
Code: Select all
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::LDAP';
$Self->{'Customer::AuthModule::LDAP::Host'} = 'office.бла.бла-бла.ru';
$Self->{'Customer::AuthModule::LDAP::BaseDN'} = 'DC=office,DC=бла,DC=бла-бла,DC=ru';
$Self->{'Customer::AuthModule::LDAP::UID'} = 'userPrincipalName';
$Self->{'Customer::AuthModule::LDAP::GroupDN'} = 'CN=Users,DC=office,DC=бла,DC=бла-бла,DC=ru';
$Self->{'Customer::AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'Customer::AuthModule::LDAP::UserAttr'} = 'DN';
$Self->{'Customer::AuthModule::LDAP::SearchUserDN'} = 'CN=otrs,CN=Users,DC=office,DC=бла,DC=бла-бла,DC=ru';
$Self->{'Customer::AuthModule::LDAP::SearchUserPw'} = 'otrsotrs';
при попытке авторизации клиента из DB в лог падает следующее ругательство
Code: Select all
CustomerUser: login_customer@office.бла.бла-бла.ru authentication failed, no LDAP entry found!BaseDN='DC=office,DC=бла,DC=бла-бла,DC=ru', Filter='(userPrincipalName=login_customer@office.бла.бла-бла.ru)', (REMOTE_ADDR: ххх.ххх.ххх.ххх).
Code: Select all
$Self->{'Customer::AuthModule'} = 'Kernel::System::CustomerAuth::DB';
$Self->{'Customer::AuthModule::DB::Table'} = 'customer_user';
$Self->{'Customer::AuthModule::DB::DSN'} = "DBI:mysql:database=otrs;host=localhost";
$Self->{'Customer::AuthModule::DB::User'} = "otrs";
$Self->{'Customer::AuthModule::DB::Password'} = "щекы";
$Self->{'Customer::AuthModule::DB::Type'} = 'mysql';
В Frontend::Customer::Auth тоже отображается тот способ авторизации, который указан в Config.pm последним (поле "засерено", перевыбрать невозможно)
НО! В Frontend::Customer::Auth можно перевыбирать остальные значения для активной в данной момент схемы авторизации, они перезаписывают параметры, указанные в Config.pm (но только для активной в этот момент схемы)
Как заставить работать обе схемы одновременно? Именно АВТОРИЗОВЫВАТЬ клиентов, а не только показывать их в агентской морде (это работает)
в документации про это ничего нет.
Есть что-то похожее на буржуйском разделе форума (сейчас не могу найти, ссылка дома осталась) но там все равно проблема не решилась.
У кого-нибудь вообще работает "мульти" авторизация?