Авторизация в index.pl через AD.

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

Модератор: ykolesnikov

Ответить
Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Авторизация в index.pl через AD.

Сообщение Andrei9385 » 14 янв 2020, 08:21

Здравствуйте. Я добавил авторизацию через LDAP.

В customer.pl пускает, а в index.pl нет.

- По сей видимости, что и верно, иначе все бы подряд туда могли авторизовываться.

Как туда добавить админа из LDAP?

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: Авторизация в index.pl через AD.

Сообщение paver » 14 янв 2020, 12:10

Авторизация агентов через LDAP настраивается в том же config.pm. Отфильтровывается через группу.
Но если их немного, лучше (проще) вести отдельно в локальной бд через админку.
--
OTRS 6.0.22

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 21 янв 2020, 15:35

paver, Благодарю. Можете подсказать, почему не могу авторизоваться под доменной учеткой? ?

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

    # ---------------------------------------------------- #
    # insert your own config settings "here"               #

$Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host'} = 'corp.mettem-m.ru';
$Self->{'AuthModule::LDAP::BaseDN'} = 'DC=corp,DC=mettem-m,DC=ru';
$Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN'} = 'CN=OTRS_Admin,OU=PRK-A,DC=corp,DC=mettem-m,DC=ru';
$Self->{'AuthModule::LDAP::AccessAttr'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr'} = 'DN';
$Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=Service,DC=corp,DC=mettem-m,DC=ru';
$Self->{'AuthModule::LDAP::SearchUserPw'} = 'пассворд';
$Self->{'AuthModule::LDAP::AlwaysFilter'} = '';
$Self->{'AuthModule::LDAP::Params'} = {
    port => 389,
    timeout => 120,
    async => 0,
    version => 3,
};

Сейчас это не работает. Как правильно сформировать нужный код?

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

Re: Авторизация в index.pl через AD.

Сообщение alexus » 21 янв 2020, 18:38

Andrei9385 писал(а):
21 янв 2020, 15:35
Сейчас это не работает.
В чём это выражается? Что в логах, какие ошибки?
С уважением,
Алексей Юсов

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? Спросите меня как!

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: Авторизация в index.pl через AD.

Сообщение paver » 22 янв 2020, 06:43

Подозреваю, что у вас осталась также авторизация через локальную бд.
Если в конфигах более одного варианта авторизации, из следует нумеровать. Ну, типа:

$Self->{'AuthModule1'} = 'Kernel::System::Auth::DB';
...

$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host2'} = 'corp.mettem-m.ru';
...
--
OTRS 6.0.22

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 22 янв 2020, 08:16

alexus, а как посмотреть логи ? Точней какой файл ?

paver, я понимаю, что у меня локальная авторизация есть, но я по Вашему примеру такого в конфиге не вижу.

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

root@otrs:/var/log# cat /opt/otrs/Kernel/Config.pm

# --
# Copyright (C) 2001-2019 OTRS AG, https://otrs.com/
# --
# This software comes with ABSOLUTELY NO WARRANTY. For details, see
# the enclosed file COPYING for license information (GPL). If you
# did not receive this file, see https://www.gnu.org/licenses/gpl-3.0.txt.
# --
#  Note:
#
#  -->> Most OTRS configuration should be done via the OTRS web interface
#       and the SysConfig. Only for some configuration, such as database
#       credentials and customer data source changes, you should edit this
#       file. For changes do customer data sources you can copy the definitions
#       from Kernel/Config/Defaults.pm and paste them in this file.
#       Config.pm will not be overwritten when updating OTRS.
# --

package Kernel::Config;

use strict;
use warnings;
use utf8;

sub Load {
    my $Self = shift;

    # ---------------------------------------------------- #
    # database settings                                    #
    # ---------------------------------------------------- #

    # The database host
    $Self->{'DatabaseHost'} = '127.0.0.1';

    # The database name
    $Self->{'Database'} = "otrs";

    # The database user
    $Self->{'DatabaseUser'} = "otrs";

    # The password of database user. You also can use bin/otrs.Console.pl Maint::Database::PasswordCrypt
    # for crypted passwords
    $Self->{'DatabasePw'} = 'gytKiMH4gz1yZsnw';

    # The database DSN for MySQL ==> more: "perldoc DBD::mysql"
    $Self->{'DatabaseDSN'} = "DBI:mysql:database=$Self->{Database};host=$Self->{DatabaseHost}";

    # The database DSN for PostgreSQL ==> more: "perldoc DBD::Pg"
    # if you want to use a local socket connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};";
    # if you want to use a TCP/IP connection
#    $Self->{DatabaseDSN} = "DBI:Pg:dbname=$Self->{Database};host=$Self->{DatabaseHost};";

    # The database DSN for Microsoft SQL Server - only supported if OTRS is
    # installed on Windows as well
#    $Self->{DatabaseDSN} = "DBI:ODBC:driver={SQL Server};Database=$Self->{Database};Server=$Self->{DatabaseHost},1433";

    # The database DSN for Oracle ==> more: "perldoc DBD::oracle"
#    $Self->{DatabaseDSN} = "DBI:Oracle://$Self->{DatabaseHost}:1521/$Self->{Database}";
#
#    $ENV{ORACLE_HOME}     = '/path/to/your/oracle';
#    $ENV{NLS_DATE_FORMAT} = 'YYYY-MM-DD HH24:MI:SS';
#    $ENV{NLS_LANG}        = 'AMERICAN_AMERICA.AL32UTF8';

    # ---------------------------------------------------- #
    # fs root directory
    # ---------------------------------------------------- #
    $Self->{Home} = '/opt/otrs';

    # ---------------------------------------------------- #
    # insert your own config settings "here"               #

# Enable LDAP Authentication Sync for Agent #
    $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = 'DC0.corp.mettem-m.ru';
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=Service,DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = 'Ot@xxxx';

# Enable Agent Mapping from LDAP to DB #
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
    UserFirstname => 'DisplayName',
    UserLastname => 'sn',
    UserEmail => 'mail',
    };

    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
        'users',
    ];
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = 'DC0.corp.mettem-m.ru';
    $Self->{'AuthModule::LDAP::BaseDN'} = 'DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=Service,DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthModule::LDAP::SearchUserPw'} = 'Ot@xxxx';

    # config settings taken from Kernel/Config/Defaults.pm #
    # ---------------------------------------------------- #
    # $Self->{SessionUseCookie} = 0;
    # $Self->{CheckMXRecord} = 0;

    # ---------------------------------------------------- #

    # ---------------------------------------------------- #
    # data inserted by installer                           #
    # ---------------------------------------------------- #
    # $DIBI$

    # ---------------------------------------------------- #
    # ---------------------------------------------------- #
    #                                                      #
    # end of your own config options!!!                    #
    #                                                      #
    # ---------------------------------------------------- #
    # ---------------------------------------------------- #

    return 1;
}

# ---------------------------------------------------- #
# needed system stuff (don't edit this)                #
# ---------------------------------------------------- #

use Kernel::Config::Defaults; # import Translatable()
use parent qw(Kernel::Config::Defaults);

# -----------------------------------------------------#

1;

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: Авторизация в index.pl через AD.

Сообщение paver » 22 янв 2020, 12:28

Все варианты авторизаций прописаны в otrs/Kernel/Config/Defaults.pm (который изменять строго не рекомедуется).
Если нужно поменять какой-либо параметр - копируйте его в Config.pm и там правьте, он перекроет дефолтное значение.
Если какой-то параметр используется дважды и более - нумеруйте.

Авторизацию агентов по лдап не использую, возможно ошибки связаны с синхронизацией или маппингом лдап и дб.

Мой пример авторизации кастомеров в двух разных бэкэндах (у меня 2 разных каталога)

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

    $Self->{'Customer::AuthModule1'} = 'Kernel::System::CustomerAuth::LDAP';
    $Self->{'Customer::AuthModule::LDAP::Host1'} = '...';
    $Self->{'Customer::AuthModule::LDAP::BaseDN1'} = '...';
    $Self->{'Customer::AuthModule::LDAP::UID1'} = 'sAMAccountName';
    $Self->{'Customer::AuthModule::LDAP::SearchUserDN1'} = '...';
    $Self->{'Customer::AuthModule::LDAP::SearchUserPw1'} = '...';
    $Self->{'Customer::AuthModule::LDAP::AlwaysFilter1'} = '(memberOf=CN=...)';

    $Self->{'Customer::AuthModule2'} = 'Kernel::System::CustomerAuth::LDAP';
    $Self->{'Customer::AuthModule::LDAP::Host2'} = '...';
    $Self->{'Customer::AuthModule::LDAP::BaseDN2'} = '...';
    $Self->{'Customer::AuthModule::LDAP::UID2'} = 'sAMAccountName';
    $Self->{'Customer::AuthModule::LDAP::SearchUserDN2'} = '...';
    $Self->{'Customer::AuthModule::LDAP::SearchUserPw2'} = '...';
По аналогии нужно настраивать и два типа авторизации агентов.
--
OTRS 6.0.22

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 22 янв 2020, 12:53

Костумеры у меня по LDAP спокойно авторизовываются. С Агентами беда. Я попробую посмотреть конфиг как Вы сказали.

Можете подсказать, какие логи мне смотреть ? Я в линуксе пока не силен.

paver
OTRS Мастер
Сообщения: 507
Зарегистрирован: 22 апр 2015, 06:45
Откуда: Томск
Благодарил (а): 7 раз
Поблагодарили: 45 раз

Re: Авторизация в index.pl через AD.

Сообщение paver » 22 янв 2020, 12:59

Для авторизации клиентов свои параметры, с агентами не пересекаются, вот и нет проблем. Если бы использовали дополнительно второй бэкэнд (еще лдап или локальную базу), пришлось бы дублировать и нумеровать.
По логам не подскажу.
А в локальной базе агенты есть? Нормально авторизуются?
--
OTRS 6.0.22

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 22 янв 2020, 14:47

Да, с локальной всё в порядке, но без кода выше. С ним ни кто не может авторизоваться.

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

Re: Авторизация в index.pl через AD.

Сообщение alexus » 22 янв 2020, 18:20

Andrei9385 писал(а):
22 янв 2020, 14:47
Да, с локальной всё в порядке, но без кода выше. С ним ни кто не может авторизоваться.
В системном журнале OTRS что? https://doc.otrs.com/doc/manual/admin/6 ... 6.2.20.3.1
Что в логе апача?
С уважением,
Алексей Юсов

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? Спросите меня как!

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 23 янв 2020, 13:40

Аутентификация успешна, однако ни одной записи для клиента не обнаружено в используемой/ых базе клиентов. Обратитесь к вашему администратору.

В логе OTRS объект: OTRS-CGI-43, состояние: No UserID found for

Можете подсказать про апач, какой лог смотреть ?

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

Re: Авторизация в index.pl через AD.

Сообщение alexus » 23 янв 2020, 15:08

Andrei9385 писал(а):
23 янв 2020, 13:40
Аутентификация успешна, однако ни одной записи для клиента не обнаружено в используемой/ых базе клиентов. Обратитесь к вашему администратору.

В логе OTRS объект: OTRS-CGI-43, состояние: No UserID found for
Надо смотреть на логин клиента, под которым прошла авторизация, и проверять, если в бекенде пользователь с таким логином. Сейчас, исходя из этого сообщения видно, что авторизовался пользователь, например, как Vasya.Pupkin, а в бекенде он может быть как Vasya.Pupkin@domain.com. И логично, что по переданному от сервера авторизации логину Vasya.Pupkin в бекенде такой пользователь отсутствует. Ну или фильтры в бекенде настроены так, что клиент, например, в другой OU
С уважением,
Алексей Юсов

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? Спросите меня как!

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 23 янв 2020, 15:20

Вот щас получилось авторизоваться доменной учеткой без суффикса домена.

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

    # Enable LDAP Authentication Sync for Agent #
    $Self->{'AuthSyncModule'} = 'Kernel::System::Auth::Sync::LDAP';
    $Self->{'AuthSyncModule::LDAP::Host'} = 'corp.mettem-m.ru';
    $Self->{'AuthSyncModule::LDAP::BaseDN'} = 'DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthSyncModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthSyncModule::LDAP::AccessAttr'} = 'member';
    $Self->{'AuthSyncModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=Service,DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthSyncModule::LDAP::SearchUserPw'} = '';

    # Enable Agent Mapping from LDAP to DB #
    $Self->{'AuthSyncModule::LDAP::UserSyncMap'} = {
    UserFirstname => 'givenName',
    UserLastname => 'sn',
    UserEmail => 'mail',
    };

    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups'} = [
        'users',
    ];
    $Self->{'AuthModule'} = 'Kernel::System::Auth::LDAP';
    $Self->{'AuthModule::LDAP::Host'} = 'corp.mettem-m.ru';
    $Self->{'AuthModule::LDAP::BaseDN'} = 'DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthModule::LDAP::UID'} = 'sAMAccountName';
    $Self->{'AuthModule::LDAP::SearchUserDN'} = 'CN=otrs,OU=Service,DC=corp,DC=mettem-m,DC=ru';
    $Self->{'AuthModule::LDAP::SearchUserPw'} = '';

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

Re: Авторизация в index.pl через AD.

Сообщение alexus » 23 янв 2020, 15:22

Andrei9385 писал(а):
23 янв 2020, 15:20
Вот щас получилось авторизоваться доменной учеткой без суффикса домена.
Т.е. я первого примера угадал 8-)
С уважением,
Алексей Юсов

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? Спросите меня как!

Andrei9385
OTRS Новобранец
Сообщения: 11
Зарегистрирован: 08 янв 2020, 22:14
Благодарил (а): 6 раз

Re: Авторизация в index.pl через AD.

Сообщение Andrei9385 » 23 янв 2020, 16:08

alexus писал(а):
23 янв 2020, 15:22
Andrei9385 писал(а):
23 янв 2020, 15:20
Вот щас получилось авторизоваться доменной учеткой без суффикса домена.
Т.е. я первого примера угадал 8-)
Ну не знаю, до этого не получалось. И с суффиксом пробовал и без. Просто если сравнить код, у меня вначале за авторизацию отвечает AuthSyncModule, а за мапинг в БД AuthModule, последний код с AuthSyncModule заработал.

Если я верно понял, AuthSyncModule в отличии от AuthModule всё как-то автоматически что ли делает..?

Но следующий вопрос, я для теста создавал учетку именем идентичную как в Active Directory и теперь даже с LDAP, авторизация идет локально.
Как я понял, OTRS не позволяет удалять учетные записи. Я могу перекрыть вход локальным? Если да, то как ?

Ответить