Поиск клиентов в LDAP

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Поиск клиентов в LDAP

Сообщение Malcom » 14 мар 2011, 17:14

Здравствуйте!

Пытаюсь настроить поиск клиентов через LDAP. В Config.pm сделал настройки как в руководстве http://doc.otrs.org/2.4/en/html/x1801.html, Example 11-3. Configuring a LDAP customer backend:

Код: Выделить всё

   
    $Self->{CustomerUser} = {
Name => 'LDAP Data Source',
Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
Host => 'myDC.com',
BaseDN => 'cn=OTRS Customers,DC=myDC,DC=com',
SSCOPE => 'sub',
UserDN => 'OTRS Admin,DC=myDC,DC=com',
UserPw => 'password',
AlwaysFilter => '',
            Params => {
port => 389,
timeout => 120,
async => 0,
version => 3,
            },
        },
CustomerKey => 'sAMAccountName',
CustomerID => 'mail',
CustomerUserListFields => ['cn', 'mail'],
CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
CustomerUserSearchPrefix => '',
CustomerUserSearchSuffix => '*',
CustomerUserSearchListLimit => 250,
CustomerUserPostMasterSearchFields => ['mail'],
CustomerUserNameFields => ['givenname', 'sn'],
СustomerUserExcludePrimaryCustomerID => 0,
        Map => [
[ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
[ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
[ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
[ 'UserLogin',      'Username',   'sAMAccountName',  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 ],
        ],
    };
В логе пишет ошибку:
Need CustomerUser->CustomerKey in Kernel/Config.pm.

Не пойму, где надо править? В Perl разбираюсь чисто интуитивно.

Заранее благодарен.
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Поиск клиентов в LDAP

Сообщение alexus » 16 мар 2011, 06:20

Посмотрите внимательно документацию http://doc.otrs.org/3.0/en/html/custome ... ckend-ldap и проверьте все параметры вместе с админом вашего AD.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 16 мар 2011, 08:08

Я из этого руководства и взял этот кусок кода. Поменял только параметры:
Host => 'myDC.com',
BaseDN => 'cn=OTRS Customers,DC=myDC,DC=com',
UserDN => 'OTRS Admin,DC=myDC,DC=com',
UserPw => 'password',
Причём, аналогичные параметры использовал для агентов, только группа другая. Там всё прекрасно работает.
Больше того, эти же параметры нормально в блоке Customer user authentication against a LDAP backend.
Только у меня сомнения по поводу BaseDN. В этом параметре указывается, откуда брать клиентов?
У нас в AD не используется параметр о.

Поднял BaseDN на самый верхний уровень AD, т.е.
BaseDN => 'DC=myDC,DC=com',
Результат тот же.

Сообщения об ошибках такие:

При вводе имени клиента и пароля в окне регистрации клиента -
Authentication succeeded, but no customer record is found in the customer backend. Please contact your administrator.

В системных сообщениях OTRS появляются записи:
notice OTRS-CGI 10 Customer User: имя (CN=бла-бла-бла) authentication ok (REMOTE ADDR: ip-address)
error OTRS-CGI 10 No such user 'имя'

И поспоянно пишет:
error OTRS-имя какого-нибудь модуля 10 Need CustomerUser=>CustomerKey in Kernel/Config.pm
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 18 мар 2011, 16:01

Алексей, ответьте, пожалуйста!
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Поиск клиентов в LDAP

Сообщение alexus » 18 мар 2011, 21:24

Покажите ваш Config.pm и укажите версию вашей системы.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 21 мар 2011, 09:41

Версия 3.0.6.

Код: Выделить всё

package Kernel::Config;

sub Load {
    my $Self = shift;


    $Self->{DatabaseHost} = '192.168.0.48';
    $Self->{Database} = 'otrs';
    $Self->{DatabaseUser} = 'otrs';
    $Self->{DatabasePw} = 'some-pass';
     $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";

$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'radar.capital.elektronika.com';
$Self->{'AuthModule::LDAP::BaseDN'} = 'dc=capital,dc=elektronika,dc=com';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS Agents,CN=Users,DC=capital,DC=elektronika,DC=com';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';

$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=OTRS Admin,CN=Users,DC=capital,DC=elektronika,DC=com';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'password';
$Self->{'AuthModule::LDAP::AlwaysFilter'} = '';

$Self->{'AuthModule::LDAP::Params'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};

$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = 'ldap://radar.capital.elektronika.com/';
$Self->{'AuthSyncModule::LDAP::BaseDN'} = 'dc=capital,dc=elektronika,dc=com';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=OTRS Admin,CN=Users,DC=capital,DC=elektronika,DC=com';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'password';

$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};

 

С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 21 мар 2011, 09:43

Продолжение Конфига.

Код: Выделить всё

   $Self->{CustomerUser} = {
        Name => 'LDAP Data Source',
        Module => 'Kernel::System::CustomerUser::LDAP',
        Params => {
            Host => 'radar.capital.elektronika.com',
            BaseDN => 'DC=capital,DC=elektronika,DC=com',
            SSCOPE => 'sub',
            UserDN => 'OTRS Admin,CN=Users,DC=capital,DC=elektronika,DC=com',
            UserPw => 'password'
      Params => {
                port => 389,
                timeout => 120,
                async => 0,
                version => 3,
            },
        },
        CustomerKey => 'sAMAccountName',
        CustomerID => 'mail',
        CustomerUserListFields => ['cn', 'mail'],
        CustomerUserSearchFields => ['sAMAccountName', 'cn', 'mail'],
        CustomerUserSearchPrefix => '*',
        CustomerUserSearchSuffix => '*',
        CustomerUserSearchListLimit => 250,
        CustomerUserPostMasterSearchFields => ['mail'],
        CustomerUserNameFields => ['givenname', 'sn'],
        CustomerUserExcludePrimaryCustomerID => 0,

        Map => [
            [ 'UserSalutation', 'Title',      'title',           1, 0, 'var', '', 0 ],
            [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
            [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
            [ 'UserLogin',      'Username',   'sAMAccountName',  1, 1, 'var', '', 0 ],
            [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
            [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
        ],
    };
Аутентификация клиентов настроена в Администрирование - Конфигурация системы.
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Поиск клиентов в LDAP

Сообщение alexus » 26 мар 2011, 09:06

попробуйте вместо "sAMAcountname" использовать "uid".
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 26 мар 2011, 15:59

Пробовал, не работает. Но может быть, в момент промежуточный. В понедельник попробую. Неясный для меня момент: в BaseDN нужно указывать конкретную папку, откуда будут браться клиенты или корень AD?
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 28 мар 2011, 12:24

Ну, всё! Кажется поборол! Стали втягиваться клиенты из Актив Директори. Остался только неотрегулированным один момент: Как настроить, чтобы втягивались клиенты только из заданной группы?
У меня сейчас BaseDN='cn=OTRS Customers,dc=capital,...,dc=com', втягивается клиент с именем 'OTRS Customers'.
Хотя нужно, чтобы брались члены этой группы.
Пробовал ставить BaseDN='dc=capital,...,dc=com' - на корень AD, но тогда втягивается всякий мусор. Да и не нужно давать всем доступ к системе.
Как это побороть?

PS: Создал ou=OTRS, перенёс туда группу OTRS Customers, пробовал подставлять в BaseDN и cn='',ou='', и только ou - разницы никакой, берёт только OTRS Customers в качестве клиента, а членов этой группы не берёт. Явно надо ещё где-то поправить. Где?
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

alexus
OTRS Гуру
Сообщения: 5192
Зарегистрирован: 20 сен 2010, 18:17
Откуда: Москва
Благодарил (а): 92 раза
Поблагодарили: 82 раза

Re: Поиск клиентов в LDAP

Сообщение alexus » 30 мар 2011, 18:41

надо смотреть на ваш config.pm и смотреть AD.
С уважением,
Алексей Юсов

Prod: OTRS CE ITSM 6.0.28 on CentOS 7 Apache 2.4 MariaDB 10.4.13 + Radiant Customer Portal

Radiant System OTRS Intergrator RU
Группа OTRS Community в Teleram
Хотите внедрить OTRS? Спросите меня как!

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 30 мар 2011, 21:25

Конфиг - в ветке. Что нужно из АД?
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 01 апр 2011, 14:42

Добился, чтобы OTRS мапил клиентов, но не так, как бы хотелось.
Что сделал: в корне домена создал ou=OTRS, переместил туда пользователя. В Config.pm поставил BaseDN => 'ou=OTRS,dc="имя-моего-домена"'.
В списке клиентов OTRS отразился этот пользователь.
Остались неясными вопросы:
1. Как заставить OTRS мапить клиентов не только прямо лежащих в ou, но и из группы cn? Пока мне не удалось сделать этого.
2. Можно ли добиться, чтобы в ou использовалась кирилица?

Версия 3.0.6
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

LookManOff
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 21 июн 2011, 10:16

Re: Поиск клиентов в LDAP

Сообщение LookManOff » 25 июн 2011, 11:43

Привет, как разобрался то? У меня такая же тема и никак не могу въехать в нее...

Код: Выделить всё

Sat Jun 25 12:39:15 2011	error	OTRS-CGI-10	No such user 'marat'!
Sat Jun 25 12:39:15 2011	notice	OTRS-CGI-10	CustomerUser: marat (CN=Марат Лукманов,OU=IT,DC=ukcm,DC=local) authentication ok (REMOTE_ADDR: 192.168.0.118).
Sat Jun 25 12:39:07 2011	error	OTRS-CGI-10	No such user '222'!
Sat Jun 25 12:39:07 2011	notice	OTRS-CGI-10	CustomerUser: 222 (CN=222,OU=IT,DC=ukcm,DC=local) authentication ok (REMOTE_ADDR: 192.168.0.118).
и так и сяк пробовал, что не так кто подскажет?

LookManOff
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 21 июн 2011, 10:16

Re: Поиск клиентов в LDAP

Сообщение LookManOff » 25 июн 2011, 11:45

мой конфиг:

Код: Выделить всё

	package Kernel::Config;

sub Load {
    my $Self = shift;
    $Self->{'DatabaseHost'} = 'localhost';
    $Self->{'Database'} = 'otrs';
    $Self->{'DatabaseUser'} = 'otrs';
    $Self->{'DatabasePw'} = 'otrs';
    $Self->{DatabaseDSN} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost};";
    $Self->{Home} = '/opt/otrs';
    $Self->{'DefaultCharset'} = 'utf-8';

}


# agent data sync against ldap #
$Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host'} = '192.168.0.253';
$Self->{'AuthSyncModule::LDAP::BaseDN'} ='DC=ukcm,DC=local';
$Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=otrsadmin,OU=IT,DC=ukcm,DC=local';
$Self->{'AuthSyncModule::LDAP::SearchUserPw'} = '123qwe';

$Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
 UserFirstname => 'givenName',
 UserLastname => 'sn',
 UserEmail => 'mail',
 };

$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
        'users',
    ];

LookManOff
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 21 июн 2011, 10:16

Re: Поиск клиентов в LDAP

Сообщение LookManOff » 25 июн 2011, 11:46

продолжение:

Код: Выделить всё

# CustomerUser
# (customer ldap backend and settings)
$Self->{CustomerUser} = {
    Name => 'Voidi po LDAP',
    Module => 'Kernel::System::CustomerUser::LDAP',
    Params => {
        # ldap host
        Host => '192.168.0.253',
        # ldap base dn
        BaseDN => 'DC=ukcm,DC=local',
        # search scope (one|sub)
        SSCOPE => 'sub',
        # The following is valid but would only be necessary if the
        # anonymous user does NOT have permission to read from the LDAP tree
        UserDN => 'CN=otrsadmin,OU=IT,DC=ukcm,DC=local',
        UserPw => '123qwe',
        # in case you want to add always one filter to each ldap query, use
        # this option. e. g. AlwaysFilter => '(mail=*)' or AlwaysFilter => '(objectclass=user)'
        #AlwaysFilter => '',
        # if your frontend is e. g. iso-8859-1 and the charset of your
        # ldap server is utf-8, use these options.
#            SourceCharset => 'utf-8',
#            DestCharset => 'iso-8859-1',
            # if both your frontend and your LDAP are unicode, use this:
            SourceCharset => 'utf-8',
            DestCharset   => 'utf-8',
            # Net::LDAP new params (if needed - for more info see perldoc Net::LDAP)
            Params => {
                port => 389,
                timeout => 120,
                async => 0,
                version => 3,
            },
    },
   

LookManOff
OTRS Новобранец
Сообщения: 8
Зарегистрирован: 21 июн 2011, 10:16

Re: Поиск клиентов в LDAP

Сообщение LookManOff » 25 июн 2011, 11:50

и еще)

Код: Выделить всё

    CustomerKey => 'sAMAccountName',
    CustomerID => 'mail',
    CustomerUserListFields => ['cn', 'mail'],
    CustomerUserSearchFields => ['uid', 'cn', 'mail'],
    CustomerUserSearchPrefix => '',
    CustomerUserSearchSuffix => '*',
    CustomerUserSearchListLimit => 250,
    CustomerUserPostMasterSearchFields => ['mail'],
    CustomerUserNameFields => ['givenname', 'sn'],
    
    CustomerUserExcludePrimaryCustomerID => 0,
    # add an ldap filter for valid users (expert setting)
#    CustomerUserValidFilter => '(!(description=locked))',
    # administrator can't change customer preferences
    AdminSetPreferences => 0,

    Map => [
        # note: Login, Email and CustomerID are mandatory!
        # var, frontend, storage, shown (1=always,2=lite), required, storage-type, http-link, readonly
        [ 'UserTitle',      'Title',      'title',           1, 0, 'var', '', 0 ],
        [ 'UserFirstname',  'Firstname',  'givenname',       1, 1, 'var', '', 0 ],
        [ 'UserLastname',   'Lastname',   'sn',              1, 1, 'var', '', 0 ],
        [ 'UserLogin',      'Username',   'uid',             1, 1, 'var', '', 0 ],
        [ 'UserEmail',      'Email',      'mail',            1, 1, 'var', '', 0 ],
        [ 'UserCustomerID', 'CustomerID', 'mail',            0, 1, 'var', '', 0 ],
#        [ 'UserCustomerIDs', 'CustomerIDs', 'second_customer_ids', 1, 0, 'var', '', 0 ],
        [ 'UserPhone',      'Phone',      'telephonenumber', 1, 0, 'var', '', 0 ],
        [ 'UserAddress',    'Address',    'postaladdress',   1, 0, 'var', '', 0 ],
        [ 'UserComment',    'Comment',    'description',     1, 0, 'var', '', 0 ],
    ],
};


use strict;
use warnings;

use vars qw(@ISA $VERSION);
$VERSION = qw($Revision: 1.23 $)[1];

use Kernel::Config::Defaults;
push (@ISA, 'Kernel::Config::Defaults');


1;


JohniGo
OTRS Бывалый
Сообщения: 369
Зарегистрирован: 21 окт 2010, 15:31

Re: Поиск клиентов в LDAP

Сообщение JohniGo » 27 июн 2011, 09:00

Для работы с кирилицей надо сохранить Config.pm в UTF-8 и написать об этом в начале файла:

Код: Выделить всё

use utf8; 
Собственно и с CN проблем особых нет:

Код: Выделить всё

    # Доменная группа, по которой определяются пользователи, допущенные к авторизации в OTRS 
    $Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS_Users,OU=OTRS_Groups,dc=mydomain,dc=local';
    $Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
Автоматизирую бардак.
Послужной список

Malcom
OTRS Новобранец
Сообщения: 22
Зарегистрирован: 14 мар 2011, 16:19
Откуда: Нижний Новгород

Re: Поиск клиентов в LDAP

Сообщение Malcom » 01 июл 2011, 14:38

Всё разрешилось, когда подстроил как здесь:
viewtopic.php?f=2&t=423, пост alexus с примером конфига. Последние кусочки мозаики сложились.
С уважением,
Malcom

SLES 11, MySQL, OTRS 3.0.6

Ответить