2013-12-13 19 views
2

我想支持租戶支持Kerberos身份驗證的多租戶Rails應用程序。針對多租戶apache託管Rails應用的Kerberos身份驗證

我用mod_auth_kerb看到的例子假設Apache服務器將直接與KDC聯繫以驗證票證。就我而言,我希望服務器讓客戶端瀏覽器與KDC協商並提供相應的票據。我相信這是通過返回一個401 w/www-negotiate標頭完成的,然後客戶端瀏覽器將返回票證。然後apache服務器會根據相應的密鑰表驗證票證。我的理解是我需要每個支持Kerberos身份驗證的域的keytab。

因此,我認爲我可以輕鬆地提供Apache然後強制Kerberos的「/ auto_login」路由。但是,我不太清楚如何讓Apache選擇正確的密鑰表;例如如果我按/ auto_login?client = abc來驗證ABC的密鑰表。

我目前使用Devise。自定義策略:Devise ignoring custom strategy會很好,但似乎我在配置Krb5 gem(現在不受支持?)處理多個keytabs並確定要驗證的問題上有同樣的問題。

+0

你想讓它跨越多個kerberos領域或簡單地在同一領域內的不同服務主體工作嗎? –

+0

感謝@FredtheMagicWonderDog的提問。我相信有多個領域;例如用戶來自CUSTA.COM,CUSTB.COM,WHATEVER.COM。所以,每個keytab。 我在想我可能需要爲指向每個域的每個域定製一個自定義配置。我在正確的軌道上嗎? –

+0

是的,雖然問題在於kerberos要求客戶/主機通過一些帶外約定來同意服務主體。如果服務器的IP地址未解析爲該域中的主機,那麼讓客戶端使用密鑰表中的服務主體將非常困難。 –

回答

1

你有多少個不同的領域?只要他們的KDC能夠驗證信任關係併發出跨域TGT,並且您的krb5.conf配置可以正確映射到這些域,則mod_auth_kerb可以在多個域中正常工作。

如果能夠建立,那麼問題將已經解決了該領域之間的交叉領域信任 - 只是指定mod_auth_kerb這個配置中的所有接受領域:

KrbAuthRealms CUSTA.COM CUSTB.COM WHATEVER .COM

+0

感謝您的答案@abbra。這是許多客戶的託管應用程序。任何希望獲得SSO的客戶都需要提供一個密鑰表。所以,很多不同的領域。但是,我並不期望需要跨領域信任,相反,我們的服務器只會使用本地存儲的keytab來驗證票證。 –

+0

不幸的是,這不是它的工作原理。您的服務器應該是其域中的一部分,或者應該成爲與其域的信任關係的域的一部分。 – abbra