2013-08-02 48 views
0

我試圖在系統上創建單一登錄,其中在未加入任何域的DMZ中的Tomcat服務器上運行的應用程序能夠在仍自動地對多個域進行身份驗證使用他們的Windows憑據記錄用戶。Tomcat跨多個域的集成Windows身份驗證

主要要求:

  • 必須支持多個域
  • 用戶必須不被提示輸入憑據,如果他們是在支持的領域
  • Web服務器不能在域
  • Web服務器位於DMZ
  • 必須支持Tomcat 6

這甚至是可能的,如果是的話,是否有任何支持這樣做的框架?我看過JOSSO,Shibboleth和OpenAM,但他們都沒有滿足全部五項要求。

JCIFS NtlmHttpFilter看起來像我正在尋找的,不幸的是它已被棄用,不再推薦。


Visio圖表供參考。 enter image description here

回答

1

Jespa可以做到這一點。如果域具有信任關係,則默認的Jespa HttpSecurityFilter將起作用。儘管如此,您仍然需要在防火牆上捅一捅孔讓Jespa與目標DC上的TCP端口445通信。你可能想要創建一個DNS記錄文件(參見Jespa操作手冊)來繞過DNS,並且仍然讓Jespa使用多個域控制器。

如果域名沒有信任,您實際上仍然可以這樣做。但是你必須編寫一些代碼來設置cookie,然後查找幾個jespa.http.HttpSecurityService實例(每個域一個)來調用doFilter。意思是你會寫一個小的請求路由器來選擇正確的域。有關IOPLEX支持的更詳細的解釋。

但請注意,如果客戶端實際上未加入域,則無論使用何種軟件或協議,在理論上都無法實現真正​​的單點登錄。您將不得不使用OpenID或CAS等「輔助」或「雙重登錄」樣式協議,並將其重定向到某個登錄頁面一次。然後,客戶端可以進入任何數量的參與該「SSO」方案的網站,而無需再次提供憑證(至少在會話的其餘部分)。

0

有沒有辦法解決您需要訪問域的Kerberos。 NTLM是沒有選擇的,因爲它是專有的,不期望找到完整的OSS實現。只有Jespa