趙向梅
(西安歐亞學院 信息工程學院,陜西 西安 710065)
基于Java EE的單點登錄技術研究與實現
趙向梅
(西安歐亞學院 信息工程學院,陜西 西安 710065)
文章針對多個應用系統的復雜登錄問題,介紹了單點登錄系統,并闡述了單點登錄的幾種模型分類,在此基礎上重點介紹了基于Cookie機制的單點登錄和基于SAML的單點登錄。基于這兩種實現方式,本文進行了單點登錄系統設計與仿真實現,證明所實現的系統能夠解決當前web應用系統面臨的登錄問題。
身份認證;單點登錄;SAML;Cookie
隨著網絡技術的迅猛發展,企業內部眾多業務相關的應用系統越來越多。一般每個應用系統都有自己獨立的用戶數據,并進行獨立的身份認證服務。這樣用戶就需要記住多個用戶名和密碼,導致常常發生用戶名混淆或者忘記密碼等現象。為了解決多個應用系統的復雜登錄問題,誕生了單點登錄的身份認證技術。
通過單點登錄技術,在一個業務相關的多應用系統平臺中,用戶只在某個應用中進行一次身份認證,就可以訪問所有相互信任的應用系統。這不僅改善了用戶的使用體驗,提高了工作效率,并且可以提高整個系統的安全性。
當前網上存在的應用系統,單點登錄已經成為不可缺少的需求。但目前的應用系統及網站和相應的商用服務技術各異,這使得單點登錄系統通用性較低。實現單點登錄的技術有很多,有基于經紀人、基于代理人、基于網關、基于Cookie及基于SAML等,針對不同架構系統使用不同的認證方式。
基于經紀人單點登錄技術,其工作原理是:用戶在訪問應用系統之前向認證服務器進行身份驗證;當用戶通過身份驗證后,認證服務器返回給用戶一個電子身份標識,用戶通過該電子身份標識去訪問其他應用系統,從而實現單點登錄。其中,有一個集中的認證和用戶賬戶管理的服務器。認證服務器即“經紀人”,對提出請求用戶的身份進行存取。
在基于代理人的單點登錄技術,有一個代理程序自動地為不同的應用程序進行用戶身份認證。被稱為“代理”的程序可以運行在客戶端或者服務器上,作為用戶與應用服務器之間的通信中轉站。代理程序會記錄用戶在各個應用系統的密碼,當用戶要訪問某個應用系統時,代理程序把相應的密碼自動發送給這個應用系統,代替用戶進行登錄。
基于網關的單點登錄提供類似像“門”一樣的網關,用來安全的接入到可信的網絡服務。主要由三部分組成:網關、客戶端、應用服務器。客戶端通過網關進行認證后,獲得訪問應用服務器的授權,應用服務器集中在被網關隔離的受限網段里,網關把外界的客戶端和內部的服務器隔離開來。
基于Cookie的單點登錄技術是一種基于HTTP重定向和票據的集中式認證方式,在 Web領域較常使用Cookie認證機制。目前大多數企業中存在眾多基于Web的應用系統,各個應用系統一般都有自己獨立的門戶網站和平臺,可考慮利用Cookie在不同站點的傳遞機制。因為Cookie技術結合了企業要求具有的方便靈活、低成本的特點。
2.1 Cookie認證方式
基于 Cookie的認證方式中,所有參與單點登錄的應用系統訪問要求采用域名,并且要屬于同一個 DNS域。 所有應用系統的登錄認證都通過統一認證中心來實現,應用系統可以直接把本系統的登錄頁面重定向到認證中心的登錄頁面,待用戶身份認證通過后,用戶的相關信息加密后由認證中心以 Cookie方式傳給客戶端瀏覽器,并重定向回各應用系統。各應用系統分析從瀏覽器傳過來的所有 Cookie,并提取相應Cookie值進行解密。根據解密后的值對用戶的身份進行認證,認證如果通過,則允許用戶訪問本系統,否則導向到統一認證中心進行登錄。
如下圖1所示,用戶通過瀏覽器訪問應用系統A,A系統驗證用戶身份,驗證通過則直接進入 A系統,用戶的相關信息則加密后生成Token,由認證中心以 Cookie方式傳給客戶端瀏覽器;頁面重定向回應用系統B,應用系統B分析從瀏覽器傳過來的Cookie,并提取相應值進行解密,進行身份認證后實現登錄。這個過程中無需統一的驗證服務器,各個服務器都通過統一的密鑰對Token進行加密解密。

圖1 基于Cookie單點登錄流程圖Fig.1 Based on the cookie flow chart of signal sign-on(sso)
2.2 基于Cookie單點登錄流程
如上圖1所示,用戶先后訪問了應用系統A和B。其中,用戶訪問應用系統B時,不需要輸入用戶名和密碼,此次訪問過程完成了單點登錄功能。用戶訪問應用系統B的流程如圖2所示。

圖2 用戶訪問應用系統B的流程圖Fig.2 User access application system flowchart B
圖2 中,標示的數字表明了單點登錄的具體操作步驟:1)用戶訪問應用系統B時,在瀏覽器地址欄輸入應用系統B的URL地址;2)系統會檢查本地是否有用戶的認證信息,如果沒有用戶認證信息,應用系統會將重定向的認證中心地址返回給用戶;3)用戶訪問認證中心的地址,因為是第二次訪問,所以會攜帶cookie;4)認證中心會檢查cookie,數據庫中如果查詢到cookie,就表明認證成功。認證中心返回用戶重定向的應用系統B的URL地址,同時攜帶ticket;5)瀏覽器訪問重定向的應用系統B的地址,同時攜帶ticket信息;6)應用系統B獲取ticket后,向屬性中心做ticket的用戶屬性查詢;7)屬性中心從數據庫查詢后,將查詢結果返回給應用系統B,應用系統B依據此屬性值做出允許或者拒絕訪問的授權。
SAML(Security Assertion Markup Language)是一種基于XML的開放標準,基于SAML可以很好的實現單點登錄。在基于SAML的單點登錄方案中,用戶、服務提供方、身份認證方可以通過SAML標準,進行安全高效的認證和授權數據。SAML定義了斷言、協議及約束[2]。
3.1 SAM L規范
SAML規范體系[4]如圖3所示。SAML斷言,由信任域內的身份認證機構發布,是對用戶或者計算機的安全信息的XML描述。斷言有身份認證斷言、授權決策斷言和屬性斷言3種類型。

圖3 SAML規范體系Fig.3 The SAML specification system
在斷言基礎上,協議定義SAML如何請求和接收斷言。SAML請求可以請求生成一個具體的斷言,也可用來進行認證、屬性和授權的查詢,而生成傳輸所需斷言。
約束定義了SAML斷言傳輸過程中使用的傳輸協議。例如SOAP/HTTP,約束在基于HTTP的SOAP傳輸協議下,這是目前最常用的。
3.2 SAM L系統組成
基于SAML的單點登錄系統主要由4個部分組成[5]:1)用戶注冊。完成新用戶的注冊功能;2)認證服務。驗證用戶名和密碼,產生SAML斷言,傳輸返回給用戶認證信息;3)SAML響應服務。接收SAML請求,提取并分析認證信息,發送SAML斷言;4)單點登錄管理。獲取用戶的認證信息,發送身份驗證請求,接收響應,驗證SAML斷言進行授權決策。
通過以上單點登錄技術研究,下面仿真實現一個簡單的單點登錄系統。借助實驗室服務器,配置jdk1.7及tomcat7.0,完成環境搭建,運用Java語言進行編程。功能主要分為4個方面:網關,客戶端、統一身份認證中心、服務器。網關用于把未被認證的用戶重定向到身份認證中心;統一身份認證中心負責為合法用戶生成認證斷言、響應斷言查詢請求等;服務器用于對應用系統的訪問進行管控,與認證中心交互用戶信息等;客戶端主要是發送用戶的請求[6]。
系統基于cookie和SAML技術實現,實現后,用戶在瀏覽器輸入應用系統A地址http://localhost:8080/test1,訪問應用系統A,此時需要認證,輸入用戶名和密碼,點擊提交后,會產生相應的cookie和ticket,用戶成功訪問應用系統A。用戶在訪問了應用系統A后,如果繼續訪問應用系統B,在瀏覽器輸入網址:http://localhost:8080/test2,即可成功訪問,不需要再輸入用戶名和密碼。之后在有效時間內,無論訪問系統A還是B,均不需要再次輸入用戶名和密碼。
認證中心是本次實現的主要一部分,此部分代碼名稱為LoginServlet.java。主要功能是對已認證的用戶創建cookie并且重定向ticket到相應的應用。該文件為servlet文件,主要是通過一個方法doGet完成。該方法的主要代碼如下:


文中對當下企業內部常用的單點登錄技術進行了分析和研究,主要闡述了基于Cookie和基于SAML的單點登錄技術,最后使用以上技術仿真實現了單點登錄系統。本文在仿真過程中是通過自己做的網站來模擬單點登錄系統,后續研究中如果需要直接在云計算實際應用上部署,以驗證其可靠性。參考文獻:
[1]Security Assertion Markup Language.In Wikipedia[EB/OL].http://en.wikipedia.Org/wiki/SAML.
[2]Amazon web services.Amazon Elastic Compute Cloud[EB/OL].http://aws.amazon.com/documentation/ec2/,June 01, 2012/June 07,2012.
[3]王小紅.基于 Cookie的單點登錄認證機制實現[J].重慶工商大學學報:自然科學版,2014,31(8):74-76.WANG Xiao-hong.Implementation mechanism for single sign-on authentication based on Cookie[J].Chongqing Technol Business Univ:Nat Sci Ed,2014,31(8):7
[4]劉浩.基于SAML的安全管理系統單點登錄技術研究[D].北京:北京交通大學,2014.
[5]OASIS Security Services(SAML)TC[EB/OL].https://www.oasis-open.org/committees/tc_home.phpwg_abbrev=security.
[6]房晶.云計算的虛擬化安全和單點登錄研究[D].北京:北京交通大學,2011.
Research and implementation of single sign-on technology based on Java EE
ZHAO Xiang-mei
(School of Information Engineering,Xi’an Eurasia University,Xi’an 710065,China)
The paper based on the complex of multiple application login problems,introduced single sign-on (sso)system,and then expounds the cookies and the SAML based single sign-on technology.Based on the above two kinds of single sign-on technology,this paper has carried on the single sign-on system design and simulation.It was proved that the system can realize solutions to the current web application login problems.
identity authentication;Single sign-on(sso);SAML;Cookie
TN929.53
A
1674-6236(2015)10-0138-03
2014-11-17 稿件編號:201411123
陜西省教育廳科學研究計劃項目(14JK2074)
趙向梅(1980—),女,陜西鳳翔人,碩士,講師。研究方向:計算機應用。