2013-01-09 120 views
0

我們有一個暴露給內部用戶(擁有Kerberos身份驗證)的系統和可以通過傳統用戶名/密碼登錄的第三方。我們目前所做的是讓多個服務器運行,其中一些使用a.mysite.com進行Kerberos化,另一些使用b.mysite.com上運行的表單身份驗證。Kerberos和表單身份驗證?

我想要的是讓我們與這兩個組共享一個URL並讓服務器確定Kerberos令牌是否可用。如果是,則使用它,否則重定向到登錄頁面。理想情況下,用戶始終保持在「myproject.mysite.com」上......但是如果我們需要(自動)將他們重定向到a.mysite.com或b.mysite.com,則基於他們是否擁有該令牌即可。

的思考?

+0

您使用的是什麼技術堆棧?這兩種類型的用戶最終是否對相同的認證服務器進行認證?你使用什麼類型的認證服務器? –

+0

我們的網站是一個在Apache上運行的ruby/rails棧(通過Passenger),並且證書存儲區是不同的。 – Oli

回答

0

這很容易實現。有兩種選擇給你。

1:發送回客戶端

WWW-Authenticate: Negotiate 
WWW-Authenticate: Kerberos 
WWW-Authenticate: Basic (or better yet Digest) 

客戶會選擇使用他最好的方法。

2:如果你真的需要形式,權威性,送

WWW-Authenticate: Negotiate 

和呈現形式爲401頁。讓表單發佈到不受保護的控制器並執行表單身份驗證。

對於Apache HTTPd,您可以使用mod_auth_kerbmod_auth_gss,並在成功驗證後檢查$REMOTE_USER

請記住,如果需要某些用戶使用Kerberos身份驗證,他們必須是您的網絡/域的一部分與KDC帳戶和適當的DNS條目。