Страница 1 из 1
Авторизация в index.pl через AD.
Добавлено: 14 янв 2020, 08:21
Andrei9385
Здравствуйте. Я добавил авторизацию через LDAP.
В customer.pl пускает, а в index.pl нет.
- По сей видимости, что и верно, иначе все бы подряд туда могли авторизовываться.
Как туда добавить админа из LDAP?
Re: Авторизация в index.pl через AD.
Добавлено: 14 янв 2020, 12:10
paver
Авторизация агентов через LDAP настраивается в том же config.pm. Отфильтровывается через группу.
Но если их немного, лучше (проще) вести отдельно в локальной бд через админку.
Re: Авторизация в index.pl через AD.
Добавлено: 21 янв 2020, 15:35
Andrei9385
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,
};
Сейчас это не работает. Как правильно сформировать нужный код?
Re: Авторизация в index.pl через AD.
Добавлено: 21 янв 2020, 18:38
alexus
Andrei9385 писал(а): ↑21 янв 2020, 15:35
Сейчас это не работает.
В чём это выражается? Что в логах, какие ошибки?
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 06:43
paver
Подозреваю, что у вас осталась также авторизация через локальную бд.
Если в конфигах более одного варианта авторизации, из следует нумеровать. Ну, типа:
$Self->{'AuthModule1'} = 'Kernel::System::Auth::DB';
...
$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host2'} = 'corp.mettem-m.ru';
...
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 08:16
Andrei9385
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;
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 12:28
paver
Все варианты авторизаций прописаны в 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'} = '...';
По аналогии нужно настраивать и два типа авторизации агентов.
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 12:53
Andrei9385
Костумеры у меня по LDAP спокойно авторизовываются. С Агентами беда. Я попробую посмотреть конфиг как Вы сказали.
Можете подсказать, какие логи мне смотреть ? Я в линуксе пока не силен.
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 12:59
paver
Для авторизации клиентов свои параметры, с агентами не пересекаются, вот и нет проблем. Если бы использовали дополнительно второй бэкэнд (еще лдап или локальную базу), пришлось бы дублировать и нумеровать.
По логам не подскажу.
А в локальной базе агенты есть? Нормально авторизуются?
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 14:47
Andrei9385
Да, с локальной всё в порядке, но без кода выше. С ним ни кто не может авторизоваться.
Re: Авторизация в index.pl через AD.
Добавлено: 22 янв 2020, 18:20
alexus
Andrei9385 писал(а): ↑22 янв 2020, 14:47
Да, с локальной всё в порядке, но без кода выше. С ним ни кто не может авторизоваться.
В системном журнале OTRS что?
https://doc.otrs.com/doc/manual/admin/6 ... 6.2.20.3.1
Что в логе апача?
Re: Авторизация в index.pl через AD.
Добавлено: 23 янв 2020, 13:40
Andrei9385
Аутентификация успешна, однако ни одной записи для клиента не обнаружено в используемой/ых базе клиентов. Обратитесь к вашему администратору.
В логе OTRS объект: OTRS-CGI-43, состояние: No UserID found for
Можете подсказать про апач, какой лог смотреть ?
Re: Авторизация в index.pl через AD.
Добавлено: 23 янв 2020, 15:08
alexus
Andrei9385 писал(а): ↑23 янв 2020, 13:40
Аутентификация успешна, однако ни одной записи для клиента не обнаружено в используемой/ых базе клиентов. Обратитесь к вашему администратору.
В логе OTRS объект: OTRS-CGI-43, состояние: No UserID found for
Надо смотреть на логин клиента, под которым прошла авторизация, и проверять, если в бекенде пользователь с таким логином. Сейчас, исходя из этого сообщения видно, что авторизовался пользователь, например, как Vasya.Pupkin, а в бекенде он может быть как
Vasya.Pupkin@domain.com. И логично, что по переданному от сервера авторизации логину Vasya.Pupkin в бекенде такой пользователь отсутствует. Ну или фильтры в бекенде настроены так, что клиент, например, в другой OU
Re: Авторизация в index.pl через AD.
Добавлено: 23 янв 2020, 15:20
Andrei9385
Вот щас получилось авторизоваться доменной учеткой без суффикса домена.
Код: Выделить всё
# 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'} = '';
Re: Авторизация в index.pl через AD.
Добавлено: 23 янв 2020, 15:22
alexus
Andrei9385 писал(а): ↑23 янв 2020, 15:20
Вот щас получилось авторизоваться доменной учеткой без суффикса домена.
Т.е. я первого примера угадал
Re: Авторизация в index.pl через AD.
Добавлено: 23 янв 2020, 16:08
Andrei9385
alexus писал(а): ↑23 янв 2020, 15:22
Andrei9385 писал(а): ↑23 янв 2020, 15:20
Вот щас получилось авторизоваться доменной учеткой без суффикса домена.
Т.е. я первого примера угадал
Ну не знаю, до этого не получалось. И с суффиксом пробовал и без. Просто если сравнить код, у меня вначале за авторизацию отвечает AuthSyncModule, а за мапинг в БД AuthModule, последний код с AuthSyncModule заработал.
Если я верно понял, AuthSyncModule в отличии от AuthModule всё как-то автоматически что ли делает..?
Но следующий вопрос, я для теста создавал учетку именем идентичную как в Active Directory и теперь даже с LDAP, авторизация идет локально.
Как я понял, OTRS не позволяет удалять учетные записи. Я могу перекрыть вход локальным? Если да, то как ?