【问题标题】:Kerberos Authentication for multi-tenant apache hosted Rails app多租户 apache 托管 Rails 应用程序的 Kerberos 身份验证
【发布时间】: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


【解决方案1】:

你有多少不同的领域? mod_auth_kerb 适用于多个领域,只要它们的 KDC 能够验证信任关系并发出跨领域 TGT,并且您的 krb5.conf 配置正确映射到这些领域。

如果您能够在领域之间建立跨领域信任,那么问题就已经解决了——只需在 mod_auth_kerb 的配置中指定所有接受的领域:

KrbAuthRealms CUSTA.COM CUSTB.COM WHATEVER.COM

【讨论】:

  • 感谢@abbra 的回答。这是许多客户的托管应用程序。任何需要 SSO 的客户都需要提供密钥表。因此,许多不同的领域。但是,我并不认为需要跨领域信任,而是我们的服务器只会使用本地存储的 keytab 验证票证。
  • 不幸的是,这不是它的工作方式。您的服务器应该是其域的一部分,或者应该是与其域具有信任关系的域的一部分。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-06-28
  • 1970-01-01
  • 2018-04-05
  • 2016-05-01
  • 1970-01-01
  • 2016-10-22
  • 1970-01-01
相关资源
最近更新 更多