одновременная работа нескольких бэкендов

Moderator: DenisBY

Locked
graffiti
Znuny newbie
Posts: 5
Joined: 21 Sep 2011, 09:37
Znuny Version: 3.0.10

одновременная работа нескольких бэкендов

Post by graffiti »

Суть проблемы - не работает авторизация клиентов через DB и LDAP (работает только что-нибудь одно)
Добавил в 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 и из DB, но авторизует клиентов ТОЛЬКО из DB, независимо от того, что написано в Frontend::Customer::Auth

Чтобы начал авторизовывать клиентов из 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';   
после этого начинает авторизовывать клиентов ТОЛЬКО из LDAP, опять таки, независимо от того, что написано в Frontend::Customer::Auth (и там жестко ставится авторизация через LDAP, поле "засерено", перевыбрать невозможно)
при попытке авторизации клиента из 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';
то начинает работать та авторизация, чей блок (LDAP или DB) идет в коде Config.pm последним.
В Frontend::Customer::Auth тоже отображается тот способ авторизации, который указан в Config.pm последним (поле "засерено", перевыбрать невозможно)
НО! В Frontend::Customer::Auth можно перевыбирать остальные значения для активной в данной момент схемы авторизации, они перезаписывают параметры, указанные в Config.pm (но только для активной в этот момент схемы)
Как заставить работать обе схемы одновременно? Именно АВТОРИЗОВЫВАТЬ клиентов, а не только показывать их в агентской морде (это работает)
в документации про это ничего нет.
Есть что-то похожее на буржуйском разделе форума (сейчас не могу найти, ссылка дома осталась) но там все равно проблема не решилась.
У кого-нибудь вообще работает "мульти" авторизация?
Locked