單點登陸(SSO)簡介

單點登陸SSO(Single Sign-On)是身份管理中的一部分。SSO的一種較爲通俗的定義是:SSO是指訪問同一服務器不一樣應用中的受保護資源的同一用戶,只須要登陸一次,即 經過一個應用中的安全驗證後,再訪問其餘應用中的受保護資源時,再也不須要從新登陸驗證。 

目前的企業應用環境中,每每有不少的應用系統,如辦公自動化(OA)系統,財務管理系統,檔案管理系統,信息查詢系統等等。這些應用系統服務於企業的信息 化建設,爲企業帶來了很好的效益。可是,用戶在使用這些應用系統時,並不方便。用戶每次使用系統,都必須輸入用戶名稱和用戶密碼,進行身份驗證;並且應用 系統不一樣,用戶帳號就不一樣,用戶必須同時牢記多套用戶名稱和用戶密碼。特別是對於應用系統數目較多,用戶數目也不少的企業,這個問題尤其突出。問題的緣由 並非系統開發出現失誤,而是缺乏總體規劃,缺少統一的用戶登陸平臺,使用SSO技術能夠解決以上這些問題。前端

1、使用SSO的好處主要有
(1)方便用戶
用戶使用應用系統時,可以一次登陸,屢次使用。用戶再也不須要每次輸入用戶名稱和用戶密碼,也不須要牢記多套用戶名稱和用戶密碼。單點登陸平臺可以改善用戶使用應用系統的體驗。
(2)方便管理員
系統管理員只須要維護一套統一的用戶帳號,方便、簡單。相比之下,系統管理員之前須要管理不少套的用戶帳號。每個應用系統就有一套用戶帳號,不只給管理上帶來不方便,並且,也容易出現管理漏洞。
(3)簡化應用系統開發
開發新的應用系統時,能夠直接使用單點登陸平臺的用戶認證服務,簡化開發流程。單點登陸平臺經過提供統一的認證平臺,實現單點登陸。所以,應用系統並不須要開發用戶認證程序。
2、實現SSO的技術主要有
(1)基於cookies實現,須要注意以下幾點:若是是基於兩個域名之間傳遞sessionid的方法可能在windows中成立,在 unix&linux中可能會出現問題;能夠基於數據庫實現;在安全性方面可能會做更多的考慮。另外,關於跨域問題,雖然cookies自己不跨 域,但能夠利用它實現跨域的SSO。
(2)Broker-based(基於經紀人),例如Kerberos等;
這種技術的特色就是,有一個集中的認證和用戶賬號管理的服務器。經紀人給被用於進一步請求的電子的身份存取。中央數據庫的使用減小了管理的代價,併爲認證 提供一個公共和獨立的"第三方"。例如Kerberos、Sesame、IBM KryptoKnight(憑證庫思想)等。
(3)Agent-based(基於代理)
在這種解決方案中,有一個自動地爲不一樣的應用程序認證用戶身份的代理程序。這個代理程序須要設計有不一樣的功能。好比, 它可使用口令表或加密密鑰來自動地將認證的負擔從用戶移開。代理被放在服務器上面,在服務器的認證系統和客戶端認證方法之間充當一個"翻譯"。例如 SSH等。
(4)Token-based,例如SecurID、WebID、
如今被普遍使用的口令認證,好比FTP,郵件服務器的登陸認證,這是一種簡單易用的方式,實現一個口令在多種應用當中使用。
(5)基於網關
Agent and Broker-based,這裏不做介紹。
(6)基於安全斷言標記語言(SAML)實現,SAML(Security Assertion Markup Language,安全斷言標記語言)的出現大大簡化了SSO,並被OASIS批准爲SSO的執行標準。開源組織OpenSAML 實現了 SAML 規範,可參考http//www.opensaml.org。 
3、SUN SSO技術 
SUN SSO技術是Sun Java System Access Manager產品中的一個組成部分。
Sun 的新身份管理產品包括Sun Java System Identity Manager、Sun Java System Directory Server Enterprise Edition 和 Sun Java System Access Manager,以上三者爲Sun Java Identity Management Suite (身份識別管理套件)的組成部分,它們與Sun Java Application Platform Suite、Sun Java Availability Suite、Sun Java Communications Suite、Sun Java Web Infrastructure Suite組成Java ES。具備革新意義的這一系列產品提供端到端身份管理,同時可與 60 多種第三方資源和技術實現互操做,集成產品能夠從SUN公司網站下載,通常以Agent軟件方式提供,是業內集成程序最高、最爲開放的身份管理解決方案之 一。
在Sun 的新身份管理產品中,Sun Java System Access Manager是基中的一個重要組成部分,Java Access Manager基於J2EE架構,採用標準的API,可擴展性強,具備高可靠性和高可用性,應用是部署在Servlets容器中的,支持分佈式,容易部署 且有較低的TCO。經過使用集中驗證點、其於角色的訪問控制以及 SSO,Sun Java System Access Manager 爲全部基於 Web 的應用程序提供了一個可伸縮的安全模型。它簡化了信息交換和交易,同時能保護隱私及重要身份信息的安全。
4、CAS 介紹 
CAS(Central Authentication Service),是耶魯大學開發的單點登陸系統(SSO,single sign-on),應用普遍,具備獨立於平臺的,易於理解,支持代理功能。CAS系統在各個大學如耶魯大學、加州大學、劍橋大學、香港科技大學等獲得應 用。
Spring Framework的Acegi安全系統支持CAS,並提供了易於使用的方案。Acegi安全系統,是一個用於Spring Framework的安全框架,可以和目前流行的Web容器無縫集成。它使用了Spring的方式提供了安全和認證安全服務,包括使用Bean Context,攔截器和麪向接口的編程方式。所以,Acegi安全系統可以輕鬆地適用於複雜的安全需求。Acegi安全系統在國內外獲得了普遍的應用, 有着良好的社區環境。
CAS 的設計目標 
(1)爲多個Web應用提供單點登陸基礎設施,同時能夠爲非Web應用但擁有Web前端的功能服務提供單點登陸的功能;
(2)簡化應用認證用戶身份的流程;
(3)將用戶身份認證集中於單一的Web應用,讓用戶簡化他們的密碼管理,從而提升安全性;並且當應用須要修改身份驗證的業務邏輯時,不須要處處修改代碼。
CAS 的實現原理
CAS(Central Authentication Server)被設計成一個獨立的Web應用。實現原理很是簡單。
CAS建立一個位數很長的隨機數(ticket)。CAS把這個ticket和成功登陸的用戶以及用戶要訪問的service聯繫起來。例如,若是用戶 peon重定向自service S,CAS建立ticket T,這個ticket T容許peon訪問service S。這個ticket是個一次性的憑證;它僅僅用於peon和僅僅用於service S,而且只能使用一次,使用以後立刻會過時,即ticket經過驗證,CAS當即刪除該ticket,使它之後不能再使用。這樣能夠保證其安全性。
關於ST,在取一個ST時,即便用delete Ticket(ticketId)同時將一次性的ST刪除;而對於TGT或PT,則經過reset Timer(ticketId)以更新TGT或PT的時間。在CAS服務端返回的ST中只能得出用戶名。
另外,CAS3.0版本也已經發布了,如今最新的版本是3.03,但願CAS3.0在向下兼容的同時,更能向咱們提供一些新東西。 linux

相關文章
相關標籤/搜索