【发布时间】:2013-12-13 18:28:32
【问题描述】:
我想支持多租户 Rails 应用程序,并有条件地支持租户的 Kerberos 身份验证。
我在 mod_auth_kerb 中看到的示例假设 apache 服务器将直接与 KDC 联系以验证票证。就我而言,我希望服务器让客户端浏览器与 KDC 协商并提供适当的票证。我相信这是通过返回一个带有 www-negotiate 标头的 401 来完成的,然后客户端浏览器将使用票证进行回调。然后,apache 服务器将根据适当的 keytab 验证票证。我的理解是,我需要来自每个支持 Kerberos 身份验证的域的密钥表。
所以,我想我可以轻松地提供一个“/auto_login”路由,然后 Apache 会在该路由上强制执行 Kerberos。但是,我不太确定如何让 Apache 选择正确的密钥表。例如如果我点击 /auto_login?client=abc 来验证 ABC 的 keytab。
我目前使用设计。自定义策略:Devise ignoring custom strategy 会很好,但似乎我在配置 Krb5 gem(现在不支持?)以处理多个 keytab 并确定要验证的对象时遇到了同样的问题。
【问题讨论】:
-
您希望它在多个 kerberos 领域中工作还是在同一领域中的不同服务主体中工作?
-
感谢@FredtheMagicWonderDog 的提问。我相信多个领域;例如来自 CUSTA.COM、CUSTA.COM、WHATEVER.COM 的用户。所以,每个人都有一个密钥表。我在想我可能需要为指向每个域的每个领域进行自定义位置配置。我在正确的轨道上吗?
-
是的,尽管问题是 kerberos 要求客户端/主机通过一些带外约定就服务主体达成一致。如果服务器的 IP 地址无法解析为该领域中的主机,那么让客户端使用密钥表中的服务主体将非常困难。
标签: ruby-on-rails-3 apache devise single-sign-on kerberos