2014-04-22 47 views
2

我們有大約12個內部管理Web應用程序(主要是Java),員工用於各種工作流程,並且每個人都有自己的不同登錄/身份驗證系統。我被要求在一個單一的系統中聯合它們。有人遞給我下面的圖表爲出發點的使用方法:通過示例的CAS和SAML2 SSO

enter image description here

正如你所看到的,每個應用程序使用CAS客戶端連接到CAS服務器。該服務器還配置了Apache httpd,並配置了Shibboleth插件(?)。該CAS服務器然後與我們的Active Directory(「AD」)服務器進行通信。

我需要確保我完全理解這些技術如何共同工作:

  • 什麼是CAS服務器和Apache/Shibboleth的發生之間?
  • Apache/Shibboleth與「Trust Store」之間發生了什麼?
  • CAS服務器和AD之間的通信是什麼?
  • 存儲在SAML2令牌中的內容是從CAS服務器發送回每個CAS客戶端的嗎?
  • 作爲一名Java開發人員,我怎樣才能使用SAML2令牌(或者如果auth失敗,缺少它)實際簽署用戶?
  • 這裏是否有更好的技術選擇:如果是這樣,他們是什麼,爲什麼?請記住,所有這些都是Java應用程序,除了其中之一,這是一個C#.NET應用程序。

回答

5

下面是一些你的答案:

首先,讓我給你一個CAS客戶,通常一個CAS服務器之間的交互是如何工作的簡要概述:(我不熟悉的Shibboleth部分,所以我省略了。)

  1. 用戶點擊應用程序網頁。
  2. 應用程序將用戶重定向到CAS。
  3. CAS使用標準Cookie和會話確定用戶是否已登錄。
  4. 如果用戶未登錄,CAS會顯示用於提供登錄憑據的登錄表單。如果用戶已經登錄,則CAS跳到步驟#7。
  5. CAS然後與AD進行交互以驗證提供的憑證是否有效。
  6. 如果是,則CAS登錄到用戶。
  7. 然後CAS將重定向迴應用程序,提供票證。
  8. 該應用程序直接調用CAS來驗證提供的票證。
  9. 如果票證有效,則CAS返回用戶信息作爲對請求的響應。
  10. 然後,應用程序爲用戶創建一個經過驗證的會話,可能會根據CAS提供的信息查找用戶信息,並在適當的地方重定向它們。

現在對於你的問題:

  • CAS和AD:CAS將實際登錄到AD,使用用戶提供的憑據查找和驗證用戶。如果您使用的是林,請確保使用正確的端口登錄到全局編錄,因爲這很容易遺漏。
  • 標記的內容並不重要,因爲標準CAS協議會將標記發送回CAS並在響應中檢索用戶詳細信息。
  • 作爲一名開發人員,實際上您可以對令牌執行很少的操作,因爲它與應用程序綁定並且只能使用一次,並且出於安全原因,必須在很短的時間內使用(即,發回給CAS進行驗證),否則它將過期。

如果您主要在做CAS,並且您有能力在您的應用程序中完成自己的CAS客戶端,CAS可以是一個非常好的解決方案。不幸的是,CAS沒有完全支持SAML2,而是使用自己的協議,儘管CAS的協議與SAML2的ARTIFACT配置文件非常相似。如果您想與其他SAML2客戶端集成,則需要完成一些工作。另外,如果您的java應用程序碰巧使用Spring,那麼Spring安全包括一個CAS客戶端開箱即用。

編寫自定義客戶端也很容易,因爲您可以看到協議不是非常複雜。

此外,雖然它有點多的工作,並可能是一個痛苦的設置,如果你的員工已經通過Windows登錄到你的域,那麼你實際上可以捎帶,並配置CAS使用Windows登錄信息用戶已經提供了而不是提示用戶使用登錄表單來重新輸入他們的Windows憑據。

+1

真棒,真棒,非常有幫助的答案。謝謝@DavidA(+1)! – AdjustingForInflation