SSO的概念:跨域
單點登陸SSO(Single Sign-On)是身份管理中的一部分。安全
SSO的一種較爲通俗的定義是:SSO是指訪問同一server不一樣應用中的受保護資源的同一用戶,僅僅需要登陸一次,即經過一個應用中的安全驗證後,再訪問其它應用中的受保護資源時,再也不需要又一次登陸驗證。cookie
SSO的用途:架構
眼下的企業應用環境中。每每有很是多的應用系統,淘寶、天貓、愛淘寶等等產品和如辦公本身主動化(OA)系統,財務管理系統。檔案管理系統,信息查詢系統等等。這些應用系統服務於企業的信息化建設,爲企業帶來了很是好的效益。但是,用戶在使用這些應用系統時,並不方便。spa
用戶每次使用系統,都必須輸入username稱和用戶password。進行身份驗證;而且應用系統不一樣,用戶帳號就不一樣,用戶必須同一時候牢記多套username稱和用戶password。.net
特別是對於應用系統數目較多,用戶數目也很是多的企業。這個問題尤其突出。問題的解決辦法並不是系統開發出現失誤。而是缺乏整體規劃。缺少統一的用戶登陸平臺,使用SSO技術可以解決以上這些問題代理
SSO的優勢:server
用戶使用應用系統時,能夠一次登陸,屢次使用。用戶再也不需要每次輸入username稱和用戶password,也不需要牢記多套username稱和用戶password。單點登陸平臺能夠改善用戶使用應用系統的體驗。blog
相比之下,系統管理員曾經需要管理很是多套的用戶帳號。每一個應用系統就有一套用戶帳號。不只給管理上帶來不方便,而且。也easy出現管理漏洞。資源
單點登陸平臺經過提供統一的認證平臺,實現單點登陸。所以。應用系統並不需要開發用戶認證程序。
SSO架構及原理:
單點登陸的實質就是安全上下文(Security Context)或憑證(Credential)在多個應用系統之間的傳遞或共享。當用戶登陸系統時,client依據用戶的憑證(好比username和password)爲用戶創建一個安全上下文,安全上下文包括用於驗證用戶的安全信息,系統用這個安全上下文和安全策略來推斷用戶是否具備訪問系統資源的權限。
單點登陸SSO(Single Sign On)說得簡單點就是在一個多系統共存的環境下。用戶在一處登陸後。就不用在其它系統中登陸,也就是用戶的一次登陸能獲得其它所有系統的信任。
單點登陸在大型站點裏使用得很頻繁。好比像阿里巴巴這種站點。在站點的背後是成百上千的子系統。用戶一次操做或交易可能涉及到幾十個子系統的協做,假設每個子系統都需要用戶認證,不只用戶會瘋掉。各子系統也會爲這種反覆認證受權的邏輯搞瘋掉。
實現單點登陸說究竟就是要解決怎樣產生和存儲那個信任。再就是其它系統怎樣驗證這個信任的有效性,所以要點也就下面幾個:
否則發現以上的方案是把信任存儲在client的Cookie裏,這樣的方法儘管實現方便但馬上會讓人質疑兩個問題:
SSO的技術:
第一:Cookie+filter利用瀏覽同域名之間本身主動傳遞cookies機制。實現兩個域名之間系統令牌傳遞問題;另外,關於跨域問題,儘管cookies自己不跨域。但可以利用它實現跨域的SSO。如:代理、暴露SSO令牌值等。
第二:基於CAS的sso