Прозрачная аутентификация в Redmine
Сегодняшний пост будет про удобство использования Redmine в корпоративной среде, а если быть точнее, про прозрачную авторизацию пользователей Redmine в домене Microsoft Active Directory.
Мы используем Redmine как единую информационную среду, в которой работают все сотрудники компании. Вводить один и тот же пароль дважды — это всегда неудобно. Поэтому, мы настроили прозрачную аутентификацию через домен.
Прозрачная аутентификация
Во-первых, в самом Redmine есть прекрасная возможность авторизации через LDAP (Active Directory является надстройкой над LDAP). Заполнив небольшое количество полей, можно быстро получить возможность аутентифицировать пользователей в домене, и даже, создавать их налету. Эта функция избавляет администратора от необходимости заводить каждого нового пользователя.
Но проблема в том, что у среднестатистического пользователя, впервые пришедшего в компанию, моментально возникает вопрос «Какой пароль вводить?». Этот вопрос, как правило, оттягивает влияние специалистов. Поэтому, мы написали небольшой плагин (надстройку над родным механизмом аутентификации 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» и добавить в него ваш домен.
Chrome и IE
Нужно добавить домен в доверенную зону.
И поменять настройки для доверенной зоны.
Chrome для Windows подхватывает настройки из Internet Explorer.
Конечно, все это лучше делать используя групповые политики.
Плагин SSO реализует ряд других полезных функций.
2-х факторная аутентификация
Плагин реализует 2-х факторную аутентификацию в Redmine с отправкой кода через SMS. Правда нужен собственный SMS-шлюз, который будет отправлять SMS-сообщения.
Можно настраивать различные параметры для 2-х факторной аутентификации. Например, можно отключить аутентификацию на определенных доменах или IP-адресах. Это удобно, когда хочется получить дополнительную проверку только для пользователей, работающих снаружи.
Можно отключить 2-х факторную аутентификацию для пользователей из определенных групп безопасности Redmine, например, для админов.
Screen saver внутри окна браузера
Это такое своеобразное костыльное решение для тех, у кого нет нормальной блокировки пользователя по бездействию в операционной системе. Можно выставить интервал, после которого, в случаи бездействия пользователя в окне браузера, вместо интерфейса Redmine появляется заставка из матрицы.
Дополнительно можно включить автоматический выход из системы по таймауту.
Надеюсь, моя статья и наш плагин будут полезны вам. Если у вас есть какие-то вопросы по использованию Redmine, то пишите в комментариях. Постараюсь ответить.
Автор: