Прозрачная аутентификация в Redmine

Сегодняшний пост будет про удобство использования Redmine в корпоративной среде, а если быть точнее, про прозрачную авторизацию пользователей Redmine в домене Microsoft Active Directory.Мы используем Redmine как единую информационную среду, в которой работают все сотрудники компании. Вводить один и тот же пароль дважды — это всегда неудобно. Поэтому, мы настроили прозрачную аутентификацию через домен.

61147f855df34d119d648fc83d820718.png

Прозрачная аутентификацияВо-первых, в самом Redmine есть прекрасная возможность авторизации через LDAP (Active Directory является надстройкой над LDAP). Заполнив небольшое количество полей, можно быстро получить возможность аутентифицировать пользователей в домене, и даже, создавать их налету. Эта функция избавляет администратора от необходимости заводить каждого нового пользователя.f05654b1c135466aa5bc031108fbaaf2.png

Но проблема в том, что у среднестатистического пользователя, впервые пришедшего в компанию, моментально возникает вопрос «Какой пароль вводить?». Этот вопрос, как правило, оттягивает влияние специалистов. Поэтому, мы написали небольшой плагин (надстройку над родным механизмом аутентификации Redmine) — SSO (Single sign-on) .

Основная функция плагина в том, чтобы взять из серверной переменной логин пользователя и в случае совпадения этого логина с базой пользователей Redmine, прозрачно аутентифицировать пользователя или создать его, а затем аутентифицировать, если логин не был найден.

Таким образом, все новые пользователи избавляются от необходимости вводить логин и пароль. Все что им нужно — это открыть ярлык на рабочем столе, и они сразу попадают в корпоративную среду.

Как настраивать на стороне сервера Что собственно делать, чтобы логин авторизованного пользователя появился в серверной переменной? Мы в качестве web-сервера используем Apache. Основная причина, по которой мы не переходим на Ngnix — это отсутствие стабильного модуля NTLM-аутентификации в домене Windows.Может кто-то сможет подсказать его?

В Apache все настраивается довольно просто. Нужно скачать и скомпилировать модуль NTLM-аутентификации. О том, как это сделать, я подробно писал в своей первой статье, там же описаны некоторые глюки работы данного модуля: habrahabr.ru/company/monandco/blog/198496/

Как настраивать на стороне клиента Чтобы прозрачная аутентификация работала корректно, браузер клиента должен передавать на север определенную информацию. По умолчанию, браузеры этого не делают и вылетает окошко с просьбой ввести доменный логин и пароль (но нам этого не нужно).FirefoxНужно в строке URL набрать «about: config«Найти параметр «network.automatic-ntlm-auth.trusted-uris» и добавить в него ваш домен.

2c793b8164eb4f9eaaee588f18bd5320.png

Chrome и IEНужно добавить домен в доверенную зону.

2e87c8c971cb466fb749d1ad19188a43.png

И поменять настройки для доверенной зоны.

566c1b149d864acc95b842ab83ff339d.png

Chrome для Windows подхватывает настройки из Internet Explorer.Конечно, все это лучше делать используя групповые политики.

Плагин SSO реализует ряд других полезных функций.

2-х факторная аутентификация Плагин реализует 2-х факторную аутентификацию в Redmine с отправкой кода через SMS. Правда нужен собственный SMS-шлюз, который будет отправлять SMS-сообщения.Можно настраивать различные параметры для 2-х факторной аутентификации. Например, можно отключить аутентификацию на определенных доменах или IP-адресах. Это удобно, когда хочется получить дополнительную проверку только для пользователей, работающих снаружи.

Можно отключить 2-х факторную аутентификацию для пользователей из определенных групп безопасности Redmine, например, для админов.

Screen saver внутри окна браузера Это такое своеобразное костыльное решение для тех, у кого нет нормальной блокировки пользователя по бездействию в операционной системе. Можно выставить интервал, после которого, в случаи бездействия пользователя в окне браузера, вместо интерфейса Redmine появляется заставка из матрицы.ebc63595ad7b4174849ed25402f78801.png

Дополнительно можно включить автоматический выход из системы по таймауту.

Надеюсь, моя статья и наш плагин будут полезны вам. Если у вас есть какие-то вопросы по использованию Redmine, то пишите в комментариях. Постараюсь ответить.

© Habrahabr.ru