簡體   English   中英

以CAS和SAML2 SSO為例

[英]CAS and SAML2 SSO by example

我們有大約十二個內部管理Web應用程序(主要是Java)供員工用於各種工作流,並且每個應用程序都有各自不同的登錄/身份驗證系統。 我被要求在一個單一的單一系統上將它們全部聯合在一起。 我收到了下圖,以此作為起點:

在此處輸入圖片說明

如您所見,每個應用程序都使用CAS客戶端連接到CAS服務器。 該服務器還具有配置了Shibboleth插件(?)的Apache httpd。 然后,該CAS服務器與我們的Active Directory(“ AD”)服務器進行通信。

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

  • CAS服務器和Apache / Shibboleth之間發生了什么?
  • Apache / Shibboleth與“信任商店”之間發生了什么?
  • CAS服務器和AD之間正在傳達什么?
  • 該SAML2令牌中存儲的內容將從CAS服務器發送回每個CAS客戶端嗎?
  • 作為Java開發人員,我該如何使用SAML2令牌(如果身份驗證失敗則缺少SAML2令牌)來實際使用用戶登錄?
  • 這里是否有更好的技術選擇:如果是,它們是什么?為什么? 請記住,所有這些都是Java應用程序,但其中一個是C#.NET應用程序。

以下是您的一些答案:

首先,讓我簡要概述一下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的ARTIFACT配置文件非常相似,但CAS並沒有使用它自己的協議來完全支持SAML2。 如果要與其他SAML2客戶端集成,則需要完成一些工作。

另外,如果您的Java應用程序恰好使用Spring,則Spring安全性包括開箱即用的CAS客戶端。

編寫自定義客戶端也很容易,因為您可以看到協議並不十分復雜。

另外,雖然工作量更大,並且設置起來可能很麻煩,但是如果您的員工已經通過Windows登錄到您的域,那么您實際上可以承擔此費用,並將CAS配置為使用用戶已經提供的Windows登錄信息而不是使用登錄表單提示用戶,使他們重新輸入Windows憑據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM