使用 Apache / Kerberos / Keytab 根据 Active Directory 对 Redmine 用户进行身份验证

使用 Apache / Kerberos / Keytab 根据 Active Directory 对 Redmine 用户进行身份验证

我们有一台 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 进行身份验证是服务器上单独应用程序的要求)

答案1

我不确定 Redmine 是否内置支持此功能,因为我能找到的所有链接都很旧了。不过,添加它似乎并不难。

基本上,大多数 Apache 身份验证模块都会在请求中设置一个名为 的环境变量REMOTE_USER,它们会用请求者已证明自己的用户名填充该变量。如果您修改了 Redmine 以接受REMOTE_USER内部身份验证提供程序,如下所示此错误报告,那么您将只能使用 Apache 和 Kerberos 来验证用户。

好像有人已经实施了做类似事情的插件此论坛帖子还详细介绍了这样的解决方案。

笔记:此方法仅提供验证, 不是授权;您将能够相信用户就是他们所说的那个人,但如果您关心用户属于哪个组或任何其他类型的分级访问控制,您可能仍需要使用直接 LDAP 连接到 Active Directory。

答案2

实际上,如果 Redmine 支持 Kerberos,那么您就大功告成了,与 Apache 无关,因为一旦用户从 Kerberos 获得票证,它就可以访问支持 Kerberos 并为此配置的服务。我自己不熟悉 Redmine,但我找到了这个插件: https://github.com/eckardt/redmine_kerberos_authentication

答案3

我刚刚发布了一个使用 single_auth 插件和 NTLM 的解决方案: http://techutils.bcmedeiros.dev/2016/02/redmine-ad-sso-setup.html

您可能能够使其适应在 apache 端使用 kerberos 而不是 NTLM。

希望能帮助到你!

相关内容