摘 要:本文首先簡要介紹了統(tǒng)一認證系統(tǒng)的設(shè)計,分析統(tǒng)一認證系統(tǒng)的不足,引出單點登錄系統(tǒng)的必要性,敘述了單點登錄系統(tǒng)的設(shè)計方法,并通過Shibboleth介紹了單點登錄系統(tǒng)的架構(gòu)以及工作流程。
關(guān)鍵詞:統(tǒng)一認證;單點登錄;中間件;Shibboleth;網(wǎng)絡(luò)安全
中圖分類號:TP311.52
在網(wǎng)站建設(shè)的過程中,多個應(yīng)用系統(tǒng)的開發(fā)都是在不同的時期完成。由于各應(yīng)用系統(tǒng)在功能側(cè)重上、設(shè)計方法上和開發(fā)技術(shù)上都有所不同,因而就形成了各自獨立的用戶庫和用戶認證體系。但隨著網(wǎng)站的不斷增加,必然會出現(xiàn)同一個用戶會使用網(wǎng)站的多應(yīng)用系統(tǒng),但在每個應(yīng)用系統(tǒng)中又有獨立的賬號,沒有一個整體上的網(wǎng)站用戶賬號的概念,進入每一個應(yīng)用系統(tǒng)前都需要以該應(yīng)用系統(tǒng)的賬號來登錄。因此,這樣的用戶在不同的應(yīng)用系統(tǒng)間實現(xiàn)同步使用用戶名和密碼是一件非常繁瑣的事情,為了改善用戶體驗,需要設(shè)計一些機制來簡化用戶名、密碼的同步過程。
1 統(tǒng)一認證系統(tǒng)
如果用戶使用同一個用戶名和密碼就能登錄所有的應(yīng)用系統(tǒng),并且在一個應(yīng)用系統(tǒng)中修改了密碼后,就能在所有其它應(yīng)用系統(tǒng)中生效,這樣的系統(tǒng)稱為統(tǒng)一認證系統(tǒng)。使用統(tǒng)一認證可以省去用戶在切換不同應(yīng)用系統(tǒng)間用戶名和密碼的過程,從而改善用戶的應(yīng)用,但仍然需要用戶使用每一個應(yīng)用系統(tǒng)的時候重新登錄。下面列舉案例加以說明。
某一公司同時提供了門戶網(wǎng)站服務(wù)器與郵箱服務(wù)器的服務(wù),由于門戶網(wǎng)站服務(wù)器與郵箱服務(wù)器是有密切關(guān)系的兩個網(wǎng)站,因此,使用郵箱服務(wù)器的賬號是可以登錄門戶網(wǎng)站服務(wù)器的。兩個服務(wù)器之間統(tǒng)一認證是這樣實現(xiàn)的。
門戶網(wǎng)站將用戶提交的請求轉(zhuǎn)發(fā)給郵箱服務(wù)器的認證模塊,然后郵箱服務(wù)器認證用戶的身份后,返回一個表單,表單中包含有用戶的用戶名和密碼,然后再將該表單通過JavaScript技術(shù)自動向門戶網(wǎng)站服務(wù)器提交。當門戶網(wǎng)站服務(wù)器獲得提交的用戶名和密碼后,再次對用戶的身份進行認證。
這樣的做法存在著不安全的因素,所用的用戶名和密碼都是明文發(fā)送給客戶端,然后再由客戶端明文提交給另一個網(wǎng)站,而且把用戶名和密碼直接寫在表單中,這意味著用戶可以在自己本地計算機中找到網(wǎng)頁緩存文件,就有可能直接導致敏感信息泄露。
為了避免信息的泄露,需要設(shè)計一套與注冊中心的統(tǒng)一認證系統(tǒng)。該系統(tǒng)的工作流程是用戶在網(wǎng)站通過HTTPS表單提交用戶名和密碼,然后網(wǎng)站服務(wù)器端通過SSL連接將用戶名、密碼提交給注冊中心,注冊中心返回認證信息。整個數(shù)據(jù)傳輸過程都是加密的,而且客戶端也沒有任何敏感信息保留,整個傳輸環(huán)境外部是安全的,但用戶名、密碼到達服務(wù)器端后被解密,然后重新加密,因此在服務(wù)器端內(nèi)部,用戶名、密碼是明文,如果有人在服務(wù)器端上實施釣魚式攻擊,很容易獲取所有敏感數(shù)據(jù)。為了規(guī)避釣魚式攻擊的風險,在網(wǎng)頁面中嵌入一個表單,把數(shù)據(jù)直接提交給注冊中心,不再經(jīng)過服務(wù)器端,認證通過后,注冊中心服務(wù)器給客戶端返回一個隨機字符串,對應(yīng)注冊中心服務(wù)端的一個Session對象??蛻舳耸褂眠@個字符串查詢網(wǎng)站的其它頁面,將字符串傳給服務(wù)器端,然后服務(wù)器端使用這個字符串向注冊中心服務(wù)器查詢用戶登錄信息。這樣的認證過程無論是傳輸途徑還是每個節(jié)點,數(shù)據(jù)均是安全的。
2 單點登錄系統(tǒng)
統(tǒng)一認證系統(tǒng)雖然解決了在不同站點之間同步用戶名和密碼的問題,但當用戶訪問不同站點的時候,仍然需要使用同樣的用戶名和密碼再登錄一次。為了進一步改善用戶體驗,需要提出一種更先進的單點登錄系統(tǒng)。所謂單點登錄系統(tǒng),就是說用戶在該站點聯(lián)盟中的任何一個站點登錄一次之后,訪問其余其它任何一個站點,都不需要再次輸入用戶名、密碼再次登錄。
單點登錄系統(tǒng)至少需要提供以下幾個特性:
(1)加密傳輸數(shù)據(jù),所有敏感數(shù)據(jù)在傳輸過程中必須加密。
(2)不泄露敏感數(shù)據(jù),不能在除了認證服務(wù)器之外的任何第三方機器上進行解密操作。
(3)使用、部署方便,不給開發(fā)與維護造成太多困難。
一個實用的單點登錄系統(tǒng)一般需要包括以下三個部分:認證系統(tǒng)、權(quán)限控制系統(tǒng)和資源訪問系統(tǒng)。
2.1 認證系統(tǒng)
認證系統(tǒng)的作用是確認用戶的身份:即通過某種方式,確認該用戶不是由其它用戶冒充的。目前常用的認證方式主要有:
2.1.1 密碼認證,用戶輸入用戶名、密碼,服務(wù)器進行認證。密碼認證使用起來比較方便,但如果服務(wù)端被攻擊,容易導致在服務(wù)端使用釣魚式攻擊騙取用戶密碼。
2.1.2 基于公鑰/私鑰的認證:即服務(wù)器持有用戶公鑰,用戶使用私鑰進行Challenge的方式確認身份。使用該方式驗證密碼,服務(wù)端對客戶端的密鑰完全一無所知,即使服務(wù)端被攻擊,也無法通過任何手段騙取客戶端的密鑰。缺點是使用起來比較繁瑣。
為了實現(xiàn)單點登錄系統(tǒng),我們必須使用第三方的認證服務(wù)器,所有的認證操作都通過這臺服務(wù)器進行。并且為了保證數(shù)據(jù)的安全性,認證數(shù)據(jù)不應(yīng)該經(jīng)過其它機器。
2.2 權(quán)限控制系統(tǒng)
權(quán)限控制系統(tǒng)包括授權(quán)系統(tǒng)和控制系統(tǒng)兩部分。授權(quán)系統(tǒng)的作用是把系統(tǒng)中需要特殊權(quán)限的資源授權(quán)給某個特定用戶,讓該用戶擁有訪問該部分資源的能力;控制系統(tǒng)的作用是當用戶的身份確定之后,判定用戶擁有哪些權(quán)限,然后對用戶提出的訪問請求采取接納或拒絕策略。
在許多應(yīng)用場合,為了提高授權(quán)的操作方便性,我們往往會引入“組”的概念:將用戶加入一個或多個組,再針對組進行授權(quán)。
使用權(quán)限控制系統(tǒng),可以避免資源訪問系統(tǒng)直接和用戶個體打交道,簡化資源訪問系統(tǒng)的設(shè)計,并提高整個系統(tǒng)的靈活性。
在單點登錄系統(tǒng)中,權(quán)限控制既可以放在統(tǒng)一的認證服務(wù)器上,也可以單獨存在于每一臺具體的應(yīng)用服務(wù)器上。如果希望統(tǒng)一對所有服務(wù)器上的用戶進行權(quán)限控制,則將權(quán)限控制服務(wù)器放在統(tǒng)一的認證服務(wù)器上;如果將權(quán)限控制分布在每一臺具體的應(yīng)用服務(wù)器上的話,則認證服務(wù)器就只負責確認用戶的身份,而把用戶能夠做什么樣的操作交給了具體的應(yīng)用服務(wù)器去負責了。
2.3 資源訪問系統(tǒng)
資源訪問系統(tǒng)就是進行實際的工作的系統(tǒng)。當用戶通過身份認證和授權(quán)認證之后,資源訪問系統(tǒng)就可以為該用戶服務(wù),進行相應(yīng)的操作。
在單點登錄系統(tǒng)中,資源訪問系統(tǒng)就是為用戶提供具體服務(wù)的網(wǎng)站。
3 Shibboleth單點登錄系統(tǒng)的設(shè)計
Shibboleth是一個針對SSO的開源項目,它是一個基于Java/JSP的Web單點登錄網(wǎng)絡(luò)中間件。Shibboleth項目主要應(yīng)用在校園內(nèi)web資源共享,以及校園間的應(yīng)用系統(tǒng)的用戶身份聯(lián)合認證,目前在瑞士得到了非常廣泛的應(yīng)用,在其它地方也有許多成功的實例。
3.1 Shibboleth的架構(gòu)
shibboleth單點登錄系統(tǒng)分為“認證服務(wù)器選擇器”、“認證服務(wù)器”和“資源提供商”三個部分,各部分之間的關(guān)系如圖1所示。
“認證服務(wù)器選擇器”的作用是,如果統(tǒng)一認證系統(tǒng)授權(quán)若干臺服務(wù)器為用戶提供認證服務(wù)的話,用戶在登錄的時候可以通過認證服務(wù)器選擇器來選擇使用哪一臺服務(wù)器認證自己的身份。如果只使用唯一的一臺認證服務(wù)器的話,這一個部件可以省略。
“認證服務(wù)器”是為用戶提供具體的認證的。根據(jù)實際項目需要不同,我們可以選擇把權(quán)限控制系統(tǒng)配置在認證服務(wù)器上或者在具體的資源提供商中。
“資源提供商”就是提供具體服務(wù)的模塊。
3.2 認證過程簡述
3.2.1 當用戶訪問資源提供商提供的一個受限資源的時候,資源提供商先檢查Session,判斷用戶是否具有相應(yīng)權(quán)限。如果已經(jīng)登錄且有權(quán)限,認證系統(tǒng)生成統(tǒng)一的認證標識交給用戶,并對標識進行校驗,判斷其有效性。
3.2.2 用戶選擇使用哪臺服務(wù)器進行認證,選擇完畢后選擇認證服務(wù)器將用戶重定向到相應(yīng)的認證服務(wù)器上。
3.2.3 用戶通過加密的HTTPS連接訪問認證服務(wù)器,使用某種方式認證自己的身份,Shibboleth支持輸入用戶名、密碼的方式,也支持使用個人數(shù)字證書的方式進行認證。
3.2.4 如果認證成功,則認證服務(wù)器創(chuàng)建一個隨機字符串作為認證信息的句柄,并將句柄返回客戶端。
3.2.5 客戶端使用旬柄訪問相應(yīng)的系統(tǒng)資源提供商。
3.2.6 資源提供商服務(wù)器創(chuàng)建加密的SSI。連接,通過Web Service訪問認證服務(wù)器,使用句柄向認證服務(wù)器查詢登錄信息,認證服務(wù)器向資源提供商提供XML格式的用戶權(quán)限表。
3.2.7 認證服務(wù)器分析用戶權(quán)限表,判斷用戶是否具有權(quán)限執(zhí)行相應(yīng)操作。
3.2.8 執(zhí)行相應(yīng)操作為用戶提供服務(wù)。
4 結(jié)束語
通過shibboleth,我們能夠非常方便快捷地實現(xiàn)一個強大而高度可擴展的統(tǒng)一認證系統(tǒng),既可以在每臺應(yīng)用服務(wù)器上單獨判定權(quán)限,也可以使用中心認證服務(wù)器統(tǒng)一進行授權(quán)與權(quán)限控制。該項目體現(xiàn)了網(wǎng)絡(luò)中間件的強大威力,具有很高的學術(shù)價值與應(yīng)用價值。
參考文獻:
[1]網(wǎng)站用戶單點登錄系統(tǒng)解決方案[EB/OL].http://www.ronghai.com/solution/2004—09/627/627_1.html.
[2]陳觀林,張泳.企業(yè)信息門戶單點登錄系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機系統(tǒng)應(yīng)用,2008(08).
[3]Erdos M.Shibboleth_Architecture DRAFT v04,2001.
[4]Shibboleth-Specification-DRAFT v10,2001.
[5]齊鳳亮,薛海峰.數(shù)字化校園中單點登錄系統(tǒng)的實現(xiàn)[J].天津電大學報,2011(02).
作者簡介:胡朝清(1970-),男,云南保山人,講師,研究方向:計算機科學與技術(shù)。
作者單位:德宏師范高等??茖W校,云南德宏 678400