У нас есть сервер Debian (сжатие), к которому у меня есть root-доступ. Он работает под управлением Apache, а Redmine развернут на сервере (в настоящее время для аутентификации используется локальная база данных MySQL).
Apache настроен на использование Kerberos и файла keytab для аутентификации пользователей в Active Directory. В текущей конфигурации, как только пользователь пытается получить доступ к чему-либо через https, пользователю предлагается ввести имя пользователя / пароль, который успешно аутентифицируется в Active Directory.
Я понимаю (отчасти), что Redmine имеет свою собственную конфигурацию LDAP, которую можно использовать для аутентификации пользователей в существующей Active Directory, но для этого потребуется, чтобы пользователь вводил свои учетные данные один раз для Apache, а затем второй раз для Redmine.
Могу ли я каким-то образом настроить Redmine для совместного использования метода аутентификации Apache вместо того, чтобы требовать от пользователя ввода учетных данных во второй раз? (Использование Apache для аутентификации в Active Directory является требованием для отдельного приложения на сервере)
Я не уверен, есть ли в Redmine встроенная поддержка этой функции, поскольку все ссылки, которые я могу найти, довольно старые. Однако, похоже, это не должно быть слишком сложно добавить.
По сути, большинство модулей аутентификации Apache устанавливают переменную среды в запросе с именем REMOTE_USER
, который они заполняют именем пользователя, которым оказался запрашивающий. Если вы изменили Redmine, чтобы принять REMOTE_USER
вместо внутреннего поставщика аутентификации, как в этот отчет об ошибке, тогда вы сможете использовать только Apache и Kerberos для аутентификации пользователей.
Вроде кто-то уже реализовал плагин, который делает то же самое. Это сообщение на форуме также подробно описывается такое решение.
Заметка: Этот метод просто предоставляет аутентификацияне разрешение; вы можете быть уверены в том, что пользователь является тем, кем они себя называют, но вам все равно может потребоваться прямое соединение LDAP с Active Directory, если вам важно, в каких группах находится пользователь, или любой другой вид постепенного контроля доступа.
Я просто публикую решение с использованием плагина single_auth и NTLM: http://blog.techutils.space/2016/02/redmine-ad-sso-setup.html
Возможно, вы сможете адаптировать его к использованию Kerberos вместо NTLM на стороне apache.
Надеюсь, поможет!
На самом деле, если Redmine поддерживает Kerberos, все готово и ничего общего с Apache, потому что как только пользователь получает билет от Kerberos, он может получить доступ к службам, которые поддерживают Kerberos и настроены для этого. Я сам не знаком с Redmine, но нашел этот плагин: https://github.com/eckardt/redmine_kerberos_authentication