Использование Apache / Kerberos / Keytab для аутентификации пользователей Redmine в Active Directory
Пожалуйста, держись со мной, так как я все еще новичок в этих технологиях.
У нас есть сервер Debian (squeeze), к которому у меня есть root-доступ. Он работает под управлением Apache, а Redmine развернут на сервере (в настоящее время для проверки подлинности используется локальная база данных MySQL).
Apache настроен на использование Kerberos и файла keytab для аутентификации пользователей в Active Directory. В текущей конфигурации, как только пользователь пытается получить доступ к чему-либо через https, ему предлагается ввести имя пользователя / пароль, которые успешно аутентифицированы в Active Directory.
Я понимаю (в некоторой степени), что Redmine имеет свою собственную конфигурацию LDAP, которую можно использовать для аутентификации пользователей в существующей Active Directory, но для этого пользователю потребуется ввести свои учетные данные один раз для Apache, а затем второй раз для Redmine.
Могу ли я каким-то образом настроить Redmine для совместного использования метода проверки подлинности Apache, а не для того, чтобы пользователь вводил свои учетные данные во второй раз? (Использование Apache для аутентификации в Active Directory является требованием для отдельного приложения на сервере)
3 ответа
Я не уверен, есть ли в 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