我们有一台 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。
希望能帮助到你!