![]() |
![]() |
|||
![]() |
||||
![]() |
||||
![]() |
肖菁 (jing.xiao@chinacreator.com) SSO(Single Sign-On)直譯為一次登錄,SSO的機制就是在企業(yè)網(wǎng)絡(luò )用戶(hù)訪(fǎng)問(wèn)企業(yè)網(wǎng)站時(shí)作一次身份認證,隨后就可以對所有被授權的網(wǎng)絡(luò )資源進(jìn)行無(wú)縫的訪(fǎng)問(wèn),SSO 可以提高網(wǎng)絡(luò )用戶(hù)的工作效率,降低了系統出錯的幾率,但是比較難于實(shí)現。本文中作者給大家詳細地解釋了SSO的基本原理以及WebSphere中的SSO實(shí)現機制。 1 SSO簡(jiǎn)介 SSO(Single Sign-On)直譯為一次登錄,WebSphere中更加形象的解釋是"單點(diǎn)登錄、全網(wǎng)漫游",意思就是說(shuō)所有已相同的DNS域名結尾的機器,可以共享用戶(hù)的認證信息,比如:a.chinacreator.com,b.chinacreator.com就可以經(jīng)過(guò)配置后實(shí)現SSO. SSO的機制就是在企業(yè)網(wǎng)絡(luò )用戶(hù)訪(fǎng)問(wèn)企業(yè)網(wǎng)站時(shí)作一次身份認證,隨后就可以對所有被授權的網(wǎng)絡(luò )資源進(jìn)行無(wú)縫的訪(fǎng)問(wèn),而不需要多次輸入自己的認證信息。 SSO 可以提高網(wǎng)絡(luò )用戶(hù)的工作效率,降低網(wǎng)絡(luò )操作的費用,并提高網(wǎng)絡(luò )的安全性,而且降低了系統出錯的幾率,但是比較難于實(shí)現。 1.1 以前的用戶(hù)登錄模式 為了實(shí)現企業(yè)的信息化、電子商務(wù)和其他需求,越來(lái)越多的信息系統在網(wǎng)上出現,這些企業(yè)的網(wǎng)絡(luò )用戶(hù)和系統管理員不得不面對這個(gè)現實(shí): 1. 用戶(hù)需要使用其中的任何一個(gè)企業(yè)應用的時(shí)候都需要做一次身份認證,而且每一次認證使用的認證信息(用戶(hù)民和密碼)不能保證一致; 2. 系統管理員需要對每一個(gè)系統設置一種單獨的安全策略,而且需要為每個(gè)系統中的用戶(hù)單獨授權以保證他們不能訪(fǎng)問(wèn)他們沒(méi)有被授權訪(fǎng)問(wèn)的網(wǎng)絡(luò )資源。
![]() 圖1 :目前使用的多點(diǎn)登錄的示意圖
1.2 SSO登錄模式 以前使用的登錄系統中,需要給每一臺機器上的系統,甚至是每臺機器上的每個(gè)應用準備一套用戶(hù)管理系統和系統用戶(hù)授權策略,考慮到互操作的可操作性和安全問(wèn)題,SSO將一個(gè)企業(yè)內部所有域中的用戶(hù)登錄和用戶(hù)賬號管理集中到一起,SSO的好處顯而易見(jiàn): 1. 減少用戶(hù)在不同系統中登錄耗費的時(shí)間,減少用戶(hù)登錄出錯的可能性 2. 實(shí)現安全的同時(shí)避免了處理和保存多套系統用戶(hù)的認證信息 3. 減少了系統管理員增加、刪除用戶(hù)和修改用戶(hù)權限的時(shí)間 4. 增加了安全性:系統管理員有了更好的方法管理用戶(hù),包括可以通過(guò)直接禁止和刪除用戶(hù)來(lái)取消該用戶(hù)對所有系統資源的訪(fǎng)問(wèn)權限
![]() 圖2:SSO的認證示意圖
2 SSO理論基礎 SSO并不是J2EE中的標準實(shí)現,而是各家中間件提供商在提供J2EE應用服務(wù)器集群時(shí)提供的一種認證信息共享的機制,所以各家廠(chǎng)商提供的實(shí)現方式不一樣,IBM的WebSphere是通過(guò)cookies記錄認證信息,BEA的WebLogic通過(guò)session共享技術(shù)實(shí)現認證信息的共享,國內深圳金蝶的apusic采用的和BEA的技術(shù)基本一致。 但是不管各家的實(shí)現技術(shù)怎么樣,他們的理論基礎都緣于J2EE中的安全技術(shù):Java Authorization Contract for Containers (Java ACC)和JavaTM Authentication and Authorization Service(JAAS)。 Java Authorization Contract for Containers (Java ACC)和JavaTM Authentication and Authorization Service(JAAS)是j2ee技術(shù)中實(shí)現安全訪(fǎng)問(wèn)機制的規范和標準,其中Java ACC屬于j2ee規范的一部分,而JAAS是Java ACC的實(shí)現部分。 2.1 Java ACC Java ACC規范定義了授權策略模塊和J2EE容器之間的實(shí)現規范,這樣容器安全提供者就可以根據操作環(huán)境的要求提供J2EE容器的授權功能。 Java ACC規范分為三個(gè)部分,分別是:提供著(zhù)配置規范,安全策略配置規范,策略判斷和執行規范。這三個(gè)部分組合在一起共同描述了授權提供者的安裝和配置,J2EE容器使用者可以根據這些規范來(lái)實(shí)現訪(fǎng)問(wèn)控制。 1. 安全提供者配置規范規定了對安全提供者和容器的要求,這些是安全策略提供者和容器之間整合的基礎。 2. 安全策略配置規范定義了容器配置工具和安全提供者之間的交互規范,所謂的交互是指如何將聲明的授權策略信息轉化為J2SE策略提供者可以識別的指令的過(guò)程。 3. 策略判斷和執行規范定義了容器策略執行點(diǎn)和安全提供者之間的交互,他實(shí)現了J2EE容器需要的安全策略判斷。 大家可以到http://java.sun.com/j2ee/javaacc/下載規范文檔。 2.2 JAAS JAAS全名是JAVA認證和授權服務(wù),它是一組java包,為提供基于用戶(hù)的認證和訪(fǎng)問(wèn)控制提供支持,它是標準可嵌入式認證模型(PAM)的java版本實(shí)現,支持基于用戶(hù)的身份認證。 JAAS是J2SE1.3中的可選包,但是J2SE1.4中已經(jīng)集成了JAAS. 標準可嵌入式認證模型(PAM)的具體內容大家可以查看http://java.sun.com/security/jaas/doc/pam.html,JSSA的規范大家可以到http://java.sun.com/products/jaas/查看。 3 WebSphere中的SSO 3.1 WebSphere中的SSO SSO在IBM的產(chǎn)品中得到了完全的體現,包括在WebSphere集群中,在WebSphere和Domino的集成中,都可以實(shí)現。 SSO允許網(wǎng)絡(luò )用戶(hù)在訪(fǎng)問(wèn)多個(gè)WebSphere域的多個(gè)應用時(shí)只要向其中的某一個(gè)WebSphere應用服務(wù)器進(jìn)行認證,就可以訪(fǎng)問(wèn)其他WebSphere域中的各種資源,包括HTML頁(yè)面,JSP文件,Servlet和企業(yè)EJB,也可以訪(fǎng)問(wèn)其他Domino中的文檔,而不需要登錄多個(gè)WebSphere域。 WebSphere中默認不支持SSO,如果需要實(shí)現SSO,需要對每一臺WebSphere服務(wù)器進(jìn)行配置,如果需要實(shí)現WebSphere和Domino之間的SSO,則對WebSphere和 Domino 都要重新配置。 3.2 前提條件 要實(shí)現WebSphere服務(wù)器之間的SSO,必須滿(mǎn)足以下前提條件: 1. 所有的服務(wù)器必須配置成同一個(gè)DNS域的一部分。 比如: DNS域配置為mydomain.com,那么,SSO將在所有Domino和WebSphere服務(wù)器起作用,只要他在屬于這個(gè)DNS域的某個(gè)主機上,比如說(shuō)在a.mydomain.com和b.mydomain.com的主機上配置的兩臺webpshere服務(wù)器之間。 2. 所有服務(wù)器必須共享用戶(hù)注冊表,用戶(hù)注冊表可以是LDAP數據庫,在WebSphere服務(wù)器之間實(shí)現SSO還可以采用用戶(hù)自己實(shí)現的用戶(hù)注冊表,但是Domino不支持用戶(hù)自己實(shí)現的用戶(hù)注冊表,所以WebSphere和Domino之間實(shí)現SSO時(shí)只能采用LDAP數據庫作為公有的用戶(hù)注冊表。 [注] 使用的LDAP數據庫必須是WebSphere支持的LDAP數據庫,推薦使用IBM的Security Way. 3. 所有的用戶(hù)定義在一個(gè)單一的LDAP目錄中。 4. 用戶(hù)的瀏覽器必須支持Cookies,因為服務(wù)器生成的信息將通過(guò)Cookies傳遞到客戶(hù)端,然后會(huì )提交給用戶(hù)訪(fǎng)問(wèn)的其他服務(wù)器進(jìn)行認證。 5. WebSphere應該是3.5版本或者以上版本。 3.3 SSO授權機制 WebSphere中的SSO授權機制比較簡(jiǎn)單,采用了類(lèi)似于windows文件的權限管理的機制,就是先定義一些角色,然后給這些角色授予訪(fǎng)問(wèn)某些服務(wù)器資源的權限,然后再將這些角色映射到具體的用戶(hù)或者用戶(hù)組。 比如:我們開(kāi)發(fā)了一個(gè)WebSphere服務(wù)器上的web應用,這個(gè)應用的管理員可以使用這個(gè)web應用的管理權限,和管理權限相關(guān)的文件都放在這個(gè)應用的/admin目錄下,那么我們就可以給這個(gè)應用增加一個(gè)admin的角色,它可以訪(fǎng)問(wèn)/admin目錄下的所有文件,然后把這個(gè)admin角色映射到所有管理員角色所在的LDAP數據庫中的某個(gè)組,如圖所示:
![]()
4 LDAP數據庫簡(jiǎn)介 LDAP的英文全稱(chēng)是Lightweight Directory Access Protocol,一般都簡(jiǎn)稱(chēng)為L(cháng)DAP。它是基于X.500標準的,與X.500不同的是,LDAP支持TCP/IP。LDAP 標準的規范是以一系列 RFC(或注釋請求,Request For Comment)的形式編排的。有關(guān)與 LDAP 相關(guān)的 RFC 的更多信息,可以參考http://www.ldapman.org/ldap_rfcs.html。 LDAP中的信息都被存儲在目錄中,LDAP不是關(guān)系型數據庫,它的信息目錄結構類(lèi)似于UNIX的文件系統,這種樹(shù)-葉結構的結構使LDAP有很好的擴充性,而且查詢(xún)速度比關(guān)系型數據庫要快。 大多數的LDAP服務(wù)器都為讀密集型的操作進(jìn)行專(zhuān)門(mén)的優(yōu)化,也就是說(shuō)如果你的應用中信息讀取操作很多,而修改信息很少的話(huà),那么您可以采用LDAP數據庫。從LDAP服務(wù)器中讀取數據的時(shí)候會(huì )比從專(zhuān)門(mén)為 OLTP優(yōu)化的關(guān)系型數據庫中讀取數據快一個(gè)數量級。 因為專(zhuān)門(mén)為讀的性能進(jìn)行優(yōu)化,大多數的LDAP目錄服務(wù)器 并不適合存儲需要需要經(jīng)常改變的數據。例如,可以用LDAP服務(wù)器來(lái)存儲公司的組織機構和員工信息,但是LDAP一般不適合作為 電子商務(wù)站點(diǎn)的數據庫服務(wù)器。 詳細的LDAP介紹資料大家可以到下載IBM中國的網(wǎng)站上《LDAP入門(mén)》教程,下載地址是:http://www-900.ibm.com/developerWorks/cn/education/linux/l-ldap/tutorial/l-ldap.zip 參考資料: 1. sun 的Java ACC規范http://java.sun.com/j2ee/javaacc/ 2. sun 的 JAAS規范http://java.sun.com/products/jaas/ 3. opengroup 的安全實(shí)現部分http://www.opengroup.org/security/ 4. ibm 的《LDAP入門(mén)》教程 5. IBM WebSphere文檔中心安全部分 http://www-3.ibm.com/software/webservers/appserv/doc/v40/ae/infocenter/was/pdf/nav_Securityguide.pdf 作者信息: 姓名: 肖菁聯(lián)系方式: 0731-6682346,jing.xiao@chinacreator.com 簡(jiǎn)介: 本人目前是湖南省長(cháng)沙鐵道學(xué)院科創(chuàng )計算機系統集成有限公司軟件中心軟件工程師,主要研究J2EE編程技術(shù)和Web Service技術(shù) |
||||||||||||||||
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=46005
聯(lián)系客服