---恢復內容開始---
什么是單點登錄?
單點登錄(Single Sign On),簡稱為SSO,是目前比較流行的企業業務整合的解決方案之一.SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統.
如果我們的系統存在於諸多的子系統中,而這些子系統是分別部署在不同的服務器中,那么使用傳統方式的session是無法解決的,我們需要使用相關的單點登錄技術來解決.
通過這張圖就可以簡單的對單點登錄有一定的了解:
1.用戶第一次訪問應用系統的時候,因為還沒有登錄,就會被引導到認證系統中進行登錄.
2.根據用戶提供的登錄信息,認證系統進行身份校驗,如果通過校驗應該返回給用戶一個認證的憑據--ticket
3.用戶再訪問別的應用的時候,就會將這個ticket帶上,作為自己的憑據,應用系統接收到請求之后,就會把ticket送到認證系統進行校驗,檢查ticket的合法性.如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統2和3了.
要實現SSO,需要一下主要的功能:
所有應用系統共享一個身份認證系統.\
統一的認證系統是SSO的前提之一,認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證,認證成功后,認證系統應該生成統一的認證標志(ticket),返還給用戶,另外,認證系統還應該對ticket進行校驗,判斷其有效性.
` 所有應用系統能過識別和提取ticket的信息.
要實現SSO的功能,讓用戶只登錄一次,就必須讓應用系統能夠識別已經登錄過的用戶,應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷當前用戶是否登陸過,從而完成單點登錄的功能.
優點:
1.提高用戶的效率
用戶不再被多次登錄困擾,也不需要記住多個ID密碼,另外,用戶忘記密碼並求助於支持人員的情況也會減少.
2.提高開發人員的效率
SSO為開發人員提供了一個通用的身份證驗證框架.實際上,如果SSO機制是獨立的,那么開發人員就完全不需要為身份驗證進行操心,他們可以假設,只要對應用程序的請求附帶一個用戶名,身份驗證就已經完成了.
3.簡化管理
如果應用程序加入了單點登錄協議,管理用戶賬號的負擔就會減輕,簡化的程度取決於應用程序,因為SSO只處理身份驗證.所以,應用程序可能仍然需要設置用戶的屬性(比如訪問特權).
缺點:
1.不利於重構,
因為涉及到的系統會很多,要重構必須要兼容所有的系統,可能很耗時.
2.無人看守桌面
因為只需要登錄一次,所有的授權的應用系統都可以訪問,可能導致一些很重要的信息泄露.
CAS(中央認證服務)
CAS是Central Authentiction Service 的縮寫,中央認證服務,一種獨立開放指令協議.CAS是Yale大學發起的開源項目.旨在為Web應用系統提供一種可靠的單點登錄方法,CAS在2004年12月正式稱為JA-SIG的一個項目.
特點:
1.開源的企業級單點登錄解決方案.
2.CAS Service為需要獨立部署的Web應用.
3.CAS Client 支持非常多的客戶端(這里指單點登錄系統中的各個Web應用),包括Java .NET PHP Apache uPortal Ruby等
CAS的原理:
從結構上看,CAS包含兩部分:CAS Server和CAS Client.CAS Server需要獨立部署,主要負責對用戶的認證工作;CAS Client負責處理對客戶端受保護資源的訪問請求,需要登錄時,重定向到CAS Server.這個是CAS最基本的協議過程:
CAS Client與受保護的客戶端應用部署在一起,以Filter方式保護受保護的資源,對於訪問受保護的資源的每個Web請求,CAS Client會分析該請求的Http請求中是否包含Server ticket,如果沒有,則說名當前用戶尚未登錄,於是將請求重定向到指定好的CAS Server登錄地址,並傳遞Service(也就是要訪問的目的資源地址),以便登錄成功后轉回該地址.用戶在第三步中輸入認證信息,如果登錄成功,CAS Server隨機產生一個相當長度,唯一,不可偽造的Service Ticket,並緩存以待將來驗證,之后系統自動重定向到Service所在地址,並為客戶端瀏覽器設置一個Ticket Granted Cookie(TGC),CAS Client在拿到Service和新產生的Ticket過后,在第五六步中與CAS Server進行身份核實,以確保Service Ticket的合法性.
在該協議中,所有與CAS的交互均采用SSL協議,確保,ST和TGC的安全性,協議工作過程中會有兩次重定向的過程,但是CAS Client 與CAS Server之間進行Ticket驗證的過程對於用戶是透明的.
另外,CAS 協議中還提供了Poxy(代理)模式,以適應更加高級,復雜的應用場景.更加詳細的介紹可以參考官網上的相關文檔.
---恢復內容結束---