Авторизация для АГЕНТОВ через LDAP<--->AD

Только для готовых решений! Пожалуйста, не используйте для вопросов и обсуждений!

Модератор: ykolesnikov

Ответить
Romano
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 12 окт 2012, 12:49

Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение Romano » 26 окт 2012, 15:31

Приветствую уважаемые форумчане!

Итак... Есть тут много тем, в которых народ сталкивается с проблемами при настройки авторизации для агентов с помощью доменных учёток, проблематично было найти нужные ответы, собрать всё в кучу и т.п. Много ответов нашел на забугорном форуме. FAQи, который на офф сайте висят не скажу, что совсем бесполезны, но конкретных примеров ну совсем маловато. А как раз про авторизацию для клиентов есть достаточно информации, так что см. на форуме.

Так вот решил я как можно более подробно описать настройки конфига для авторизации через LDAP именно для агентов.

Начнем с легкого описания моей структуры: есть два домена, домен ХХХХХ - используется для юзерей центрального офиса, и домен УУУУУ - используется для региональных юзерей. Также есть группы людей( назовем их ДИТ - Департамент Информационных Технологий), которые обслуживают всю эту лабуду. Большая часть из них в центр. офисе, и, допусти пару человек - это региональные админы.

Что требуется сделать:
1. настроить авторизацию для АГЕНТОВ(ДИТ) центрального офиса через LDAP<--->AD (все они в домене ХХХХХ)
2. настроить авторизацию для АГЕНТОВ региональных админов через LDAP<--->AD (они в домене УУУУУ)

Саму ОТРС желательно ставить в папку БЕЗ пробелов, например C:/OTRS/...
Убеждаемся, что LDAP модуль успешно установлен начинаем писать конфиг - .../Kernel/Config.pm. Начало и окончание я упоминать не буду т.к. у всех он одинаковый, разве что пароль на MYSQL базу свой :D

Авторизация для АГЕНТОВ центр. офиса (домен ХХХХХ):
Блок 1

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

# Авторизация АГЕНТОВ через LDAP Domen1(ХХХХХ) #
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = '172.16.хх.22';   # тут я говорю, что домен ХХХХХ крутится на серваке с этим айпишником
$Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=ххххх,DC=хххх'; # собственно сам домен
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';

$Self->{'AuthModule::LDAP::GroupDN1'} = 'OU=DIT,OU=Domain Users,DC=ХХХХХ,DC=ХХХХ';  # указываю где находится АУшка с #товарищами, которые смогут логинится в админ интерфейст # 
$Self->{'AuthModule::LDAP::AccessAttr1'} = 'member';  # собственно разрешаю залогиниться участникам вышеуказанной АУшки (или #группы... у кого как) т.е. он должен быть мембером
$Self->{'AuthModule::LDAP::UserAttr1'} = 'DN';

$Self->{'AuthModule::LDAP::SearchUserDN1'} = 'CN=OTRS ServiceDesk Admin,OU=System accounts,OU=IT operations,DC=ХХХХХ,DC=ХХХХ';  # это учетка в #домене ХХХХХ. С её помощью и будет "вытягиваться" инфа о юзерах из домена #ХХХХХ. Достаточно обычного юзера
$Self->{'AuthModule::LDAP::SearchUserPw1'} = 'password'; # тут понятно
$Self->{'AuthModule::LDAP::AlwaysFilter1'} = '';

# параметры соединения, чаще всего их даже не требуется указывать
$Self->{'AuthModule::LDAP::Params1'} = {
port => 389,
timeout => 120,
async => 0,
version => 3,
};

# Синхронизация данных из АД с локальной БД #
$Self->{'AuthSyncModule1'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host1'} = '172.16.хх.22';
$Self->{'AuthSyncModule::LDAP::BaseDN1'} = 'DC=ХХХХХ,DC=ХХХХ';
$Self->{'AuthSyncModule::LDAP::UID1'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN1'} = 'CN=OTRS ServiceDesk Admin,OU=System accounts,OU=IT operations,DC=ХХХХХ,DC=ХХХХ';
$Self->{'AuthSyncModule::LDAP::SearchUserPw1'} = 'pass';

# Мапинг с АД в локальную ДБ #
$Self->{'AuthSyncModule::LDAP::UserSyncMap1'} = {
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
# здесь я указываю какие права будут сразу присвоены агету, после успешного входа в админку
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups1'} = [
        'users',
    ];
Последний раз редактировалось Romano 29 окт 2012, 09:22, всего редактировалось 2 раза.
OTRS + ITSM 3.2.3
Win Server 2003 R2

Romano
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 12 окт 2012, 12:49

Re: Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение Romano » 26 окт 2012, 15:35

Авторизация для региональных админов - АГЕНТОВ (домен УУУУУ):
Блок 2:

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

# Авторизация АГЕНТОВ через LDAP Domen2(УУУУУ) #
$Self->{'AuthModule2'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host2'} = '172.16.уу.44';
$Self->{'AuthModule::LDAP::BaseDN2'} = 'DC=УУУУУ,DC=УУУ,DC=УУ';
$Self->{'AuthModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'AuthModule::LDAP::GroupDN2'} = 'OU=regional admins,OU=External users,DC=УУУУУУ,DC=УУУ,DC=УУ';
$Self->{'AuthModule::LDAP::AccessAttr2'} = 'member';
$Self->{'AuthModule::LDAP::UserAttr2'} = 'DN';

$Self->{'AuthModule::LDAP::SearchUserDN2'} = 'CN=OTRS ServiceDesk Admin,OU=Test accounts,OU=IT Operations,DC=УУУУУУ,DC=УУУ,DC=УУ'; # это учетка в домене УУУУУ. С её помощью и будет "вытягиваться" инфа о юзерах из домена #УУУУУ. Достаточно обычного юзера.
$Self->{'AuthModule::LDAP::SearchUserPw2'} = 'pass';
$Self->{'AuthModule::LDAP::AlwaysFilter2'} = '';

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

# Синхронизация данных из АД с локальной БД #
$Self->{'AuthSyncModule2'} = 'Kernel::System::Auth::Sync::LDAP';
$Self->{'AuthSyncModule::LDAP::Host2'} = '172.16.уу.44';
$Self->{'AuthSyncModule::LDAP::BaseDN2'} = 'DC=УУУУУУ,DC=УУУ,DC=УУ';
$Self->{'AuthSyncModule::LDAP::UID2'} = 'sAMAccountName';
$Self->{'AuthSyncModule::LDAP::SearchUserDN2'} = 'CN=OTRS ServiceDesk Admin,OU=Test accounts,OU=IT Operations,DC=УУУУУУ,DC=УУУ,DC=УУ';
$Self->{'AuthSyncModule::LDAP::SearchUserPw2'} = 'pass';

# Мапинг с АД в локальную ДБ #
$Self->{'AuthSyncModule::LDAP::UserSyncMap2'} = {
UserFirstname => 'givenName',
UserLastname => 'sn',
UserEmail => 'mail',
};
    $Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups2'} = [
        'users',
    ];
Вот и всё. Думаю разницу между блоками увидите сами :)
Разные учетки в доменах, разные АУшки с нужными юзерами, разные айпишники...
Последний раз редактировалось Romano 26 окт 2012, 17:15, всего редактировалось 1 раз.
OTRS + ITSM 3.2.3
Win Server 2003 R2

Romano
OTRS Новобранец
Сообщения: 57
Зарегистрирован: 12 окт 2012, 12:49

Re: Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение Romano » 26 окт 2012, 15:37

Теперь как это все работает:
допустим я логинюсь первый раз, ввожу доменный(в данном случае домен ХХХХХ) логин, у нас они обычно выглядят как "lastname.firstname", например - pupkin.vasiliy
и ввожу доменный пароль...
Если введенные данные правильные, то в локальной БД создается пользователь с аналогичными данными, как в AD. Т.е. логин, пароль, телефон и т.п. И автоматически присваиваются права "user", см. эту строчку

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

$Self->{'AuthSyncModule::LDAP::UserSyncInitialGroups2'} = [
        'users',
    ];
Здесь можно указать через запятую и другие права, типа "administrator" и т.п. И новосозданному агенту сразу будут присвоены соотв. права.
Или же заходите под учеткой администратора и сами уже раздаете нужные права.

Еще один момент:
если в домене ХХХХХ найден чел. логином pupkin.vasiliy и правильно введен пароль, то успешно залогинитесь в админку, если пароль домена ХХХХХ не подходит, система ломиться в домен УУУУУ и там ищет учетку pupkin.vasiliy и проверяет правильность пароля. Веду к тому, что залогинится в конечном итоге именно нужный человек, с правильным логином, правильным паролем, правильного доменом. Ибо вероятность того, что в двух разных доменах есть две одинаковые учетки(а у меня такие есть 1 или 2 учетки...) стремиться к нулю. Ну и тем более вероятность, что одинаковые пароли - уж точно НОЛЬ :) Этот же принцип работает и при авторизации КЛИЕНТОВ.

На что стоит обратить внимание, дык это "$Self->{'AuthModule::LDAP::Host1'}" - на единичку в конце каждого модуля. Этот идентификатор нужен только тогда, когда надо описывать авторизацию для двух и больше бэкендов. Если у вас один бэкенд, то Блок 2 вам не нужен, а в Блоке 1 можете поубирать все единички и всё будет работать. Еще упомяну, что между доменами настроены доверительные отношения. Тоесть, теоретически, учетку с домена ХХХХХ можно также использовать и для домена УУУУУ. Но я все таки решил, что правильнее будет создать в каждом домене свою учетку. Если захотите, - поэкспериментируйте.

Собственно всё. Так у меня настроена авторизаци и она отлично работает для АГЕНТОВ.
На чем всё это крутится - см. в подписи.
OTRS + ITSM 3.2.3
Win Server 2003 R2

vladon
OTRS Новобранец
Сообщения: 3
Зарегистрирован: 10 авг 2011, 12:40
Откуда: Набережные Челны
Контактная информация:

Re: Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение vladon » 07 фев 2013, 14:42

Дам совет от себя.

Если вы используете OTRS в мультидоменной среде (несколько доменов в одном лесу или на прочих доверительных отношениях), то целесообразно заменить в конфиге выше везде

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

sAMAccountName
на

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

userPrincipalName
.

Тогда логин юзера будет полным с именем домена, т.е. для пользователя username@domain1 . ru не username, а именно username@domain1 . ru.

То есть, пользователи из domain1.ru будут логиниться как username@domain1 . ru, а из domain2 . ru как username@domain2 . ru. Это поможет разрешать конфликты с одинаковыми именами юзеров в разных доменах (мы столкнулись).

При этом имейте в виду, что уже существующие пользователи не смогут залогиниться, нужно в базе mysql поменять всем имена пользователей (добавить часть с @domain.ru).

(Разрядил точки в названия доменов, т.к. форум определяет это как ссылки, уберите пробелы вокруг точек)

tftm
OTRS Новобранец
Сообщения: 1
Зарегистрирован: 24 сен 2013, 19:37

Re: Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение tftm » 24 сен 2013, 19:43

Одновременно локальная авторизация и авторизация по LDAP настраивается следующим образом:
1. Как в примере настраиваем авторизацию по LDAP создавая модуль авторизации №1
$Self->{'AuthModule1'} = 'Kernel::System::Auth::LDAP';
$Self->{'AuthModule::LDAP::Host1'} = '172.16.хх.22';
$Self->{'AuthModule::LDAP::BaseDN1'} = 'DC=ххххх,DC=хххх'; # собственно сам домен
$Self->{'AuthModule::LDAP::UID1'} = 'sAMAccountName';
.........................
.........................

2. Добавляем следом модуль авторизации №2 для локальных пользователей (одну строку)
$Self->{'AuthModule2'} = 'Kernel::System::Auth::DB';

Работать будет аналогично как в примере с двумя LDAP: сначала система будет искать пользователя с помощью первого модуля (в LDAP), а затем в локальной базе данных.

ykolesnikov
OTRS Гуру
Сообщения: 3119
Зарегистрирован: 24 дек 2010, 09:27
Откуда: Череповец
Благодарил (а): 4 раза
Поблагодарили: 5 раз
Контактная информация:

Re: Авторизация для АГЕНТОВ через LDAP<--->AD

Сообщение ykolesnikov » 07 дек 2015, 12:52

Коллеги!!!!! :twisted: :twisted: :twisted:
Читайте правила форума!
Этот раздел не для вопросов!
Задавайте вопросы в соответствующих разделах.


Модератор форума
Ю. Колесников
С уважением Юрий Колесников
OTRS 5.0.22, ITSM 5.0.22
OpenSuse 13.2, MariaDB 10.0.22
OTRS 5.0.22, ITSM 5.0.22 тестовая

Ответить