Прозрачная аутентификация в 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, то пишите в комментариях. Постараюсь ответить.