畢業(yè)設(shè)計(jì)-web單點(diǎn)登錄系統(tǒng)的研究與設(shè)計(jì)_第1頁
已閱讀1頁,還剩49頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、<p><b>  摘要</b></p><p>  隨著計(jì)算機(jī)網(wǎng)絡(luò)與信息技術(shù)的發(fā)展,企業(yè)網(wǎng)中應(yīng)用系統(tǒng)越來越多。通常這些系統(tǒng)各自有一套認(rèn)證系統(tǒng),用戶需要使用各種系統(tǒng)時(shí),就必須逐一以輸入口令等方式通過各種系統(tǒng)的身份認(rèn)證。然而這強(qiáng)制需要用戶記住不同系統(tǒng)的認(rèn)證口令,繁瑣的認(rèn)證也增加了服務(wù)器的負(fù)荷。因此,需要一種獨(dú)立的身份認(rèn)證系統(tǒng)來統(tǒng)一管理各個(gè)應(yīng)用系統(tǒng)的身份認(rèn)證。</p>&

2、lt;p>  本文在分析了主流web單點(diǎn)登錄系統(tǒng)相關(guān)技術(shù)和規(guī)范上,總結(jié)出一個(gè)單點(diǎn)登錄系統(tǒng)的基本模型結(jié)構(gòu),以身份認(rèn)證服務(wù)中心和身份認(rèn)證服務(wù)客戶端系統(tǒng)構(gòu)成。并通過Java平臺實(shí)現(xiàn)了一個(gè)具備基本認(rèn)證功能的web單點(diǎn)登錄系統(tǒng)。該系統(tǒng)采用模塊化方式開發(fā),各層次相對獨(dú)立,減少了已有系統(tǒng)集成到單點(diǎn)登錄系統(tǒng)的開發(fā)量。</p><p>  關(guān)鍵詞:單點(diǎn)登錄,統(tǒng)一認(rèn)證,信息系統(tǒng),網(wǎng)站設(shè)計(jì)</p><p>

3、;<b>  Abstract</b></p><p>  With the development of computer network and Information Technology, the number of applications is increasing in enterprise network. However, each application system h

4、as its own identity authentication system. The user who wants to access these applications must be identified seriatim, like enter different password. But it compels user to remember each application’s password, also, it

5、 makes application servers tend to be overburdened. Consequently, an unaided identity authentication system is ne</p><p>  Base on the mainstream technique and criterion of web single sign-on system, this pa

6、per sums up a simple single sign-on system model which is composed identity authentication service center and identity authentication service client system. Base on the java platform, a simple web single sign-on system i

7、s carried out. This system adopts modularization development manner, the layers in system keep independence from each other, and it cut down integration workload.</p><p>  Keywords: SSO, unite attestation, i

8、nformation system, web site design目 錄</p><p><b>  第一章 緒論1</b></p><p>  1.1 研究目的與意義1</p><p>  1.2 國內(nèi)外研究概述2</p><p>  1.3 本文研究內(nèi)容及組織結(jié)構(gòu)3</p><p

9、>  第二章 單點(diǎn)登錄系統(tǒng)相關(guān)技術(shù)與規(guī)范5</p><p>  2.1 單點(diǎn)登錄系統(tǒng)概念5</p><p>  2.2 通用的標(biāo)準(zhǔn)解決方案7</p><p>  2.2.1 通用安全服務(wù)應(yīng)用程序接口(GSS-API)7</p><p>  2.2.2開放軟件基金會(huì)(OSF)-分布式計(jì)算環(huán)境(DCE)8</p>

10、<p>  2.2.3 嵌入式認(rèn)證模塊(PAM)9</p><p>  2.3 現(xiàn)實(shí)解決方案10</p><p>  2.3.1 Broker-Based(基于經(jīng)紀(jì)人) SSO方案10</p><p>  2.3.2 Agent-Based (基于代理人) SSO方案10</p><p>  2.3.3 Token-Base

11、d(基于令牌) SSO方案11</p><p>  2.3.4 Agent and Broker-Based SSO方案12</p><p>  2.3.5 Gateway-Based(基于網(wǎng)關(guān)) SSO 方案12</p><p>  2.3.6 SAML-Based(基于安全斷言標(biāo)記語言)方案13</p><p>  第三章 w

12、eb單點(diǎn)登錄系統(tǒng)模型結(jié)構(gòu)15</p><p>  3.1 系統(tǒng)模型15</p><p>  3.1.1 總體結(jié)構(gòu)15</p><p>  3.1.2 詳細(xì)結(jié)構(gòu)16</p><p>  3.2 身份認(rèn)證服務(wù)中心18</p><p>  3.2.1 功能18</p><p>  3.2.

13、2 結(jié)構(gòu)19</p><p>  3.3 身份認(rèn)證服務(wù)客戶端20</p><p>  3.3.1 功能20</p><p>  3.3.2 結(jié)構(gòu)21</p><p>  3.4 系統(tǒng)運(yùn)作流程22</p><p>  第四章 系統(tǒng)實(shí)現(xiàn)27</p><p>  4.1 需求分析27&

14、lt;/p><p>  4.1.1 功能需求27</p><p>  4.1.2 性能需求27</p><p>  4.1.3 運(yùn)行需求27</p><p>  4.2 開發(fā)平臺及工具28</p><p>  4.3 數(shù)據(jù)庫設(shè)計(jì)30</p><p>  4.4 系統(tǒng)關(guān)鍵模塊代碼實(shí)現(xiàn)32&

15、lt;/p><p>  4.3.1 數(shù)據(jù)庫連接類32</p><p>  4.3.2 認(rèn)證中心票據(jù)的生成36</p><p>  4.3.3 認(rèn)證中心對用戶身份的認(rèn)證36</p><p>  4.3.4 認(rèn)證客戶端對用戶身份的認(rèn)證37</p><p>  第五章 總結(jié)與展望41</p><p

16、>  5.1 本文總結(jié)41</p><p>  5.2 進(jìn)一步研究方向41</p><p><b>  致謝43</b></p><p><b>  參考文獻(xiàn)45</b></p><p><b>  第一章 緒論</b></p><p>

17、  1.1 研究目的與意義</p><p>  隨著信息技術(shù)和網(wǎng)絡(luò)技術(shù)的發(fā)展,各種應(yīng)用服務(wù)的不斷普及,用戶每天需要登錄到許多不同的信息系統(tǒng),如網(wǎng)絡(luò)、郵件、數(shù)據(jù)庫、各種應(yīng)用服務(wù)器等。每個(gè)系統(tǒng)都要求用戶遵循一定的安全策略,比如要求輸入用戶ID和口令。隨著用戶需要登錄系統(tǒng)的增多,出錯(cuò)的可能性就會(huì)增加,受到非法截獲和破壞的可能性也會(huì)增大,安全性就會(huì)相應(yīng)降低。而如果用戶忘記了口令,不能執(zhí)行任務(wù),就需要請求管理員的幫助,并只

18、能在重新獲得口令之前等待,造成了系統(tǒng)和安全管理資源的開銷,降低了生產(chǎn)效率。為避免這種尷尬,牢記登錄信息,用戶一般會(huì)簡化密碼,或者在多個(gè)系統(tǒng)中使用相同的口令,或者創(chuàng)建一個(gè)口令"列表"——這些都是會(huì)危及公司信息保密性的幾種習(xí)慣性做法。</p><p>  當(dāng)這些安全風(fēng)險(xiǎn)逐步反映出來,管理員增加一些新的安全措施的時(shí)候,這些措施卻在減少系統(tǒng)的可用性,并且會(huì)增大系統(tǒng)管理的復(fù)雜度。</p>

19、<p>  另一方面,較大的企業(yè)內(nèi)部,一般都有很多的業(yè)務(wù)支持系統(tǒng)為其提供相應(yīng)的管理和IT服務(wù)。例如財(cái)務(wù)系統(tǒng)為財(cái)務(wù)人員提供財(cái)務(wù)的管理、計(jì)算和報(bào)表服務(wù);人事系統(tǒng)為人事部門提供全公司人員的維護(hù)服務(wù);各種業(yè)務(wù)系統(tǒng)為公司內(nèi)部不同的業(yè)務(wù)提供不同的服務(wù)等等。這些系統(tǒng)的目的都是讓計(jì)算機(jī)來進(jìn)行復(fù)雜繁瑣的計(jì)算工作,來替代人力的手工勞動(dòng),提高工作效率和質(zhì)量。這些不同的系統(tǒng)往往是在不同的時(shí)期建設(shè)起來的,運(yùn)行在不同的平臺上;也許是由不同廠商開發(fā),使用了

20、各種不同的技術(shù)和標(biāo)準(zhǔn)。每一個(gè)應(yīng)用系統(tǒng)在運(yùn)行了數(shù)年以后,都會(huì)成為不可替換的企業(yè)IT架構(gòu)的一部分。隨著企業(yè)的發(fā)展,業(yè)務(wù)系統(tǒng)的數(shù)量在不斷的增加,老的系統(tǒng)卻不能輕易的替換,這會(huì)帶來很多的開銷。其一是管理上的開銷,需要維護(hù)的系統(tǒng)越來越多。很多系統(tǒng)的數(shù)據(jù)是相互冗余和重復(fù)的,數(shù)據(jù)的不一致性會(huì)給管理工作帶來很大的壓力。業(yè)務(wù)和業(yè)務(wù)之間的相關(guān)性也越來越大,例如公司的計(jì)費(fèi)系統(tǒng)和財(cái)務(wù)系統(tǒng),財(cái)務(wù)系統(tǒng)和人事系統(tǒng)之間都不可避免的有著密切的關(guān)系。</p>

21、<p>  為了降低管理的消耗,最大限度的重用已有投資的系統(tǒng),很多企業(yè)都在進(jìn)行著企業(yè)應(yīng)用集成(EAI)。企業(yè)應(yīng)用集成可以在不同層面上進(jìn)行:例如在數(shù)據(jù)存儲層面上的“數(shù)據(jù)大集中”,在傳輸層面上的“通用數(shù)據(jù)交換平臺”,在應(yīng)用層面上的“業(yè)務(wù)流程整合”,和用戶界面上的“通用企業(yè)門戶”等等。事實(shí)上,還用一個(gè)層面上的集成變得越來越重要,那就是“身份認(rèn)證”的整合,也就是“單點(diǎn)登錄”。</p><p>  另外,使用“

22、單點(diǎn)登錄”還是SOA時(shí)代的需求之一。在面向服務(wù)的架構(gòu)中,服務(wù)和服務(wù)之間,程序和程序之間的通訊大量存在,服務(wù)之間的安全認(rèn)證是SOA應(yīng)用的難點(diǎn)之一,應(yīng)此建立“單點(diǎn)登錄”的系統(tǒng)體系能夠大大簡化SOA的安全問題,提高服務(wù)之間的合作效率。</p><p>  因此,在市場上提出了這樣的需求:網(wǎng)絡(luò)用戶可以基于最初訪問網(wǎng)絡(luò)時(shí)的一次身份驗(yàn)證,對所有被授權(quán)的網(wǎng)絡(luò)資源進(jìn)行無縫的訪問。從而提高網(wǎng)絡(luò)用戶的工作效率,降低網(wǎng)絡(luò)操作的費(fèi)用,并

23、提高網(wǎng)絡(luò)的安全性。</p><p>  正是基于這種市場需求,本文力圖通過對web單點(diǎn)登錄系統(tǒng)的研究,了解相關(guān)系統(tǒng)架構(gòu)和技術(shù),并嘗試開發(fā)出一套解決類似市場需求的web單點(diǎn)登錄系統(tǒng)。</p><p>  1.2 國內(nèi)外研究概述</p><p>  在國內(nèi),較早使用SSO系統(tǒng)主要是一些大型企業(yè),比如中國移動(dòng)。隨著網(wǎng)絡(luò)的普及與發(fā)展,企業(yè)內(nèi)應(yīng)用系統(tǒng)的增加,越來越多的企業(yè)開始

24、使用SSO來整合企業(yè)的應(yīng)用系統(tǒng)。而國內(nèi)提供解決方案的企業(yè)也蓬勃發(fā)展,出現(xiàn)了較多的SSO產(chǎn)品。</p><p>  在國外,對于SSO的研究較國內(nèi)要早的多而且深入的多。成熟的大型商業(yè)系統(tǒng)或技術(shù)規(guī)范已經(jīng)非常多了:微軟的.NET Passport(已整合到Windows Live ID)[1]、Sun Microsystems等建立的自由聯(lián)盟計(jì)劃(Liberty Identity Web Services Framew

25、ork)[2]、Microsoft和IBM聯(lián)合開發(fā)的Web服務(wù)聯(lián)邦語言(WS.Federation)以及結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織(OASIS)的安全服務(wù)委員會(huì)(SSTC)提出的安全斷言標(biāo)記語言(Security Assertion Markup Language,SAML)[3]。.NET Passport技術(shù)是通過其Passport來實(shí)現(xiàn)單點(diǎn)登錄的,只要用戶通過微軟的Passport服務(wù)器的驗(yàn)證,就可以訪問所有 與Passpor

26、t服務(wù)器合作的站點(diǎn)。但由于微軟在Passport驗(yàn)證技術(shù)方面不公開,使得在安全性方面有一定的隱患。自由聯(lián)盟計(jì)劃和Web服務(wù)聯(lián)邦語言都是通過建立聯(lián)盟身份,來訪問聯(lián)盟中的其它系統(tǒng)的。但由于Web服務(wù)是松耦合的,所以建立聯(lián)盟身份并不是每個(gè)Web服務(wù)場景所必須的。S</p><p>  除了大型的商業(yè)系統(tǒng),國外還有很多成熟的開源SSO系統(tǒng)。比如SourceID.NET,OpenSSO,CAS。</p>&l

27、t;p>  1.3 本文研究內(nèi)容及組織結(jié)構(gòu)</p><p>  本文的研究內(nèi)容主要是基于現(xiàn)有web單點(diǎn)登錄系統(tǒng)和技術(shù),分析研究各種系統(tǒng)的結(jié)構(gòu)和技術(shù),并嘗試開發(fā)出一套實(shí)現(xiàn)基本功能的web單點(diǎn)登錄系統(tǒng)。</p><p><b>  主要內(nèi)容如下:</b></p><p>  1.介紹單點(diǎn)登錄系統(tǒng)的相關(guān)技術(shù)及規(guī)范,并分別從技術(shù),可實(shí)施性等方面進(jìn)

28、行比較。</p><p>  2.結(jié)合上一點(diǎn)的分析,概括出一種web單點(diǎn)登錄系統(tǒng)的簡易模型結(jié)構(gòu)。</p><p>  3.在第2點(diǎn)的基礎(chǔ)上,模擬一種需求環(huán)境,開發(fā)出一套web單點(diǎn)登錄系統(tǒng)。</p><p>  組織結(jié)構(gòu)如圖1-1所示:</p><p>  第二章 單點(diǎn)登錄系統(tǒng)相關(guān)技術(shù)與規(guī)范</p><p>  2.1

29、 單點(diǎn)登錄系統(tǒng)概念</p><p>  Single Sign-On(SSO),中文名稱為單點(diǎn)登錄。指在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。它包括可以將這次主要的登錄映射到其他應(yīng)用中用于同一個(gè)用戶的登錄的機(jī)制。</p><p>  用一種生活中的例子來對比介紹。西安是一個(gè)旅游勝地,有很多著名的景點(diǎn)。通常人們在進(jìn)入景點(diǎn)之前都需要購買該景點(diǎn)的門票,才能進(jìn)入欣賞風(fēng)

30、景。當(dāng)你游覽各個(gè)景點(diǎn)時(shí)就顯得很不方便,每個(gè)景點(diǎn)都需要重新購買單獨(dú)的門票,既費(fèi)時(shí)又費(fèi)力。于是西安旅游局發(fā)行了一種旅游年票,只需購買該年票,就可以隨時(shí)進(jìn)入西安市多個(gè)景點(diǎn),并不需要在各個(gè)景點(diǎn)單獨(dú)購票。</p><p>  單點(diǎn)登錄機(jī)制與上述情況類似。當(dāng)用戶第一次訪問應(yīng)用系統(tǒng)1的時(shí)候,因?yàn)檫€沒有登錄,會(huì)被引導(dǎo)到認(rèn)證系統(tǒng)中進(jìn)行登錄(1);根據(jù)用戶提供的登錄信息,認(rèn)證系統(tǒng)進(jìn)行身份效驗(yàn),如果通過效驗(yàn),應(yīng)該返回給用戶一個(gè)認(rèn)證的憑

31、據(jù)--ticket(2);用戶再訪問別的應(yīng)用的時(shí)候(3,5)就會(huì)將這個(gè)ticket帶上,作為自己認(rèn)證的憑據(jù),應(yīng)用系統(tǒng)接受到請求之后會(huì)把ticket送到認(rèn)證系統(tǒng)進(jìn)行效驗(yàn),檢查ticket的合法性(4,6)。如果通過效驗(yàn),用戶就可以在不用再次登錄的情況下訪問應(yīng)用系統(tǒng)2和應(yīng)用系統(tǒng)3了。如圖2-1所示: </p><p>  從上面的視圖可以看出,要實(shí)現(xiàn)SSO,需要以下主要的功能:</p><p&g

32、t;  1. 所有應(yīng)用系統(tǒng)共享一個(gè)身份認(rèn)證系統(tǒng)。</p><p>  統(tǒng)一的認(rèn)證系統(tǒng)是SSO的前提之一。認(rèn)證系統(tǒng)的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進(jìn)行登錄認(rèn)證;認(rèn)證成功后,認(rèn)證系統(tǒng)應(yīng)該生成統(tǒng)一的認(rèn)證標(biāo)志(ticket),返還給用戶。另外,認(rèn)證系統(tǒng)還應(yīng)該對ticket進(jìn)行效驗(yàn),判斷其有效性。 </p><p>  2. 所有應(yīng)用系統(tǒng)能夠識別和提取ticket信息</

33、p><p>  要實(shí)現(xiàn)SSO的功能,讓用戶只登錄一次,就必須讓應(yīng)用系統(tǒng)能夠識別已經(jīng)登錄過的用戶。應(yīng)用系統(tǒng)應(yīng)該能對ticket進(jìn)行識別和提取,通過與認(rèn)證系統(tǒng)的通訊,能自動(dòng)判斷當(dāng)前用戶是否登錄過,從而完成單點(diǎn)登錄的功能。</p><p>  上述是對單點(diǎn)登錄系統(tǒng)的概述,對于本文所研究的web單點(diǎn)登錄系統(tǒng)而言,眾所周知,Web協(xié)議(也就是HTTP)是一個(gè)無狀態(tài)的協(xié)議。一個(gè)Web應(yīng)用由很多個(gè)Web頁面

34、組成,每個(gè)頁面都有唯一的URL來定義。用戶在瀏覽器的地址欄輸入頁面的URL,瀏覽器就會(huì)向Web Server去發(fā)送請求。瀏覽器向Web服務(wù)器發(fā)送了兩個(gè)請求,申請了兩個(gè)頁面。這兩個(gè)頁面的請求是分別使用了兩個(gè)單獨(dú)的HTTP連接。所謂無狀態(tài)的協(xié)議也就是表現(xiàn)在這里,瀏覽器和Web服務(wù)器會(huì)在第一個(gè)請求完成以后關(guān)閉連接通道,在第二個(gè)請求的時(shí)候重新建立連接。Web服務(wù)器并不區(qū)分哪個(gè)請求來自哪個(gè)客戶端,對所有的請求都一視同仁,都是單獨(dú)的連接。這樣的方式

35、大大區(qū)別于傳統(tǒng)的(Client/Server)C/S結(jié)構(gòu),在那樣的應(yīng)用中,客戶端和服務(wù)器端會(huì)建立一個(gè)長時(shí)間的專用的連接通道。正是因?yàn)橛辛藷o狀態(tài)的特性,每個(gè)連接資源能夠很快被其他客戶端所重用,一臺Web服務(wù)器才能夠同時(shí)服務(wù)于成千上萬的客戶端。</p><p>  但是我們通常的應(yīng)用是有狀態(tài)的。先不用提不同應(yīng)用之間的SSO,在同一個(gè)應(yīng)用中也需要保存用戶的登錄身份信息。例如用戶在訪問頁面1的時(shí)候進(jìn)行了登錄,但是剛才也提

36、到,客戶端的每個(gè)請求都是單獨(dú)的連接,當(dāng)客戶再次訪問頁面2的時(shí)候,如何才能告訴Web服務(wù)器,客戶剛才已經(jīng)登錄過了呢?瀏覽器和服務(wù)器之間有約定:通過使用cookie技術(shù)來維護(hù)應(yīng)用的狀態(tài)。Cookie是可以被Web服務(wù)器設(shè)置的字符串,并且可以保存在瀏覽器中。當(dāng)瀏覽器訪問了頁面1時(shí),web服務(wù)器設(shè)置了一個(gè)cookie,并將這個(gè)cookie和頁面1一起返回給瀏覽器,瀏覽器接到cookie之后,就會(huì)保存起來,在它訪問頁面2的時(shí)候會(huì)把這個(gè)cookie

37、也帶上,Web服務(wù)器接到請求時(shí)也能讀出cookie的值,根據(jù)cookie值的內(nèi)容就可以判斷和恢復(fù)一些用戶的信息狀態(tài)。</p><p>  Web-SSO完全可以利用Cookie結(jié)束來完成用戶登錄信息的保存,將瀏覽器中的Cookie和上文中的Ticket結(jié)合起來,完成SSO的功能。</p><p>  2.2 通用的標(biāo)準(zhǔn)解決方案</p><p>  2.2.1 通用安

38、全服務(wù)應(yīng)用程序接口(GSS-API)</p><p>  "Generic Security Service Application Program Interface"簡寫GSS-API[4],譯為通用安全服務(wù)應(yīng)用程序接口,一個(gè)典型的GSS-API調(diào)用者是通訊協(xié)議本身,調(diào)用GSS-API,用可信性、完整性和機(jī)密性的安全服務(wù)來保護(hù)他的通訊。例如Kerberos。這就是GSS-API可以在不同的

39、安全服務(wù)和應(yīng)用程序被使用的原因,包括SSO。GSS-API 的目的是提供隱蔽特定的內(nèi)在安全機(jī)制的一個(gè)接口。這可以幫助不同應(yīng)用程序之間有更好的互操作性。一個(gè)典型的GSS-API調(diào)用者是通訊協(xié)議本身,調(diào)用GSS-API,用可信性、完整性和機(jī)密性的安全服務(wù)來保護(hù)他的通訊。調(diào)用者接受一個(gè)本地GSS-API實(shí)現(xiàn)提供的一個(gè)令牌,并且把令牌傳送給遠(yuǎn)程系統(tǒng)的對應(yīng)方;對方接收令牌并把其傳送給他的GSS-API本地實(shí)現(xiàn)處理。通過GSS-API這種方式實(shí)現(xiàn)的

40、可用的安全服務(wù)在基于公鑰和私鑰的底層加密技術(shù)的多種機(jī)制上可實(shí)現(xiàn)的。</p><p>  關(guān)于認(rèn)證和密鑰分配系統(tǒng)的一個(gè)經(jīng)常遇到的問題是,由于它要求對應(yīng)用系統(tǒng)本身做出改動(dòng),所以經(jīng)常受到的冷遇??紤]到這一點(diǎn), 對一個(gè)認(rèn)證和密鑰分配系統(tǒng)來說, 提供一個(gè)標(biāo)準(zhǔn)化的安全API就顯得格外重要。能做到這一點(diǎn), 開發(fā)人員就不必再為增加很少的安全功能而對整個(gè)應(yīng)用程序動(dòng)大手術(shù)了。因此, 認(rèn)證系統(tǒng)設(shè)計(jì)領(lǐng)域內(nèi)最主要的進(jìn)展之一就是制定了標(biāo)準(zhǔn)化

41、的安全API, 即通用安全服務(wù)API(GSS-API)。德州Austin大學(xué)的研究者們開發(fā)的安全網(wǎng)絡(luò)編程(SNP), 對GSS-API接口進(jìn)行了進(jìn)一步的封裝, 使同網(wǎng)絡(luò)安全性有關(guān)的編程更加方便。</p><p>  GSS-API的設(shè)計(jì)假定和強(qiáng)調(diào)以下幾個(gè)基本目標(biāo):</p><p>  1. 機(jī)制獨(dú)立:GSS-API定義了一個(gè)接口來使用密碼技術(shù)實(shí)現(xiàn)強(qiáng)壯的認(rèn)證和其他安全服務(wù)--在獨(dú)立于特定的底

42、層機(jī)制的通用層上。例如,GSS-API提供的服務(wù)可以用密鑰技術(shù)實(shí)現(xiàn)(例如,Kerberos)或者使用公鑰技術(shù)實(shí)現(xiàn)(例如 X.509)。</p><p>  2. 協(xié)議環(huán)境獨(dú)立:GSS-API獨(dú)立于使用它的通訊協(xié)議組,允許在多種協(xié)議環(huán)境中使用。在進(jìn)行調(diào)用的協(xié)議和GSS-API的應(yīng)用中間,加入一個(gè)面向特定的通訊協(xié)議(如RPC)的中介,可以保持GSS-API功能的起用和協(xié)議通訊的起用之間的同步。</p>

43、<p>  3. 協(xié)議聯(lián)合的獨(dú)立:GSS-API安全上下文構(gòu)造是獨(dú)立于通訊協(xié)議相關(guān)的構(gòu)造的。這個(gè)特點(diǎn)允許單獨(dú)的GSS-API實(shí)現(xiàn)可以被多種協(xié)議模塊使用,以利于調(diào)用這些模塊的應(yīng)用程序。同時(shí)GSS-API服務(wù)也可以被應(yīng)用程序直接調(diào)用,完全獨(dú)立于協(xié)議關(guān)聯(lián)。</p><p>  4. 適應(yīng)多種實(shí)現(xiàn):GSS-API客戶不是被限制存在于實(shí)現(xiàn)GSS-API的系統(tǒng)定義的TCB(Trusted Computing Bas

44、e)范圍內(nèi);安全服務(wù)被以一種既適應(yīng)intra-TCB調(diào)用,又適用extra-TCB調(diào)用的方式說明。</p><p>  2.2.2開放軟件基金會(huì)(OSF)-分布式計(jì)算環(huán)境(DCE)</p><p>  開放軟件基金會(huì)(OSF)的分布式計(jì)算環(huán)境[5]。DCE是一個(gè)被廣泛接受的解決方案,用于開發(fā)和部署安全的、企業(yè)級的分布式計(jì)算應(yīng)用,提供網(wǎng)絡(luò)安全、透明的服務(wù)分配和跨平臺通信的能力,允許在一個(gè)異構(gòu)

45、的環(huán)境中快速設(shè)計(jì)基于"主/從"或"對等"結(jié)構(gòu)的應(yīng)用。它能方便地對網(wǎng)絡(luò)提供最佳的性能和可靠的保護(hù)。因?yàn)镈CE是由主流操作系統(tǒng)廠商的行業(yè)協(xié)會(huì)所支持的,所以這個(gè)標(biāo)準(zhǔn)在很多計(jì)算平臺上都得到了廣泛的支持。DCE核心功能現(xiàn)在已經(jīng)被幾乎所有的UNIX系統(tǒng)及其變種所支持,并且,在PC操作系統(tǒng)日益普及的今天,DCE核心服務(wù)也在PC機(jī)上變得越來越普遍。 </p><p>  DCE的認(rèn)證管理服

46、務(wù)是集成了基于DES私人密鑰加密技術(shù)和MIT開發(fā)的Kerberos技術(shù)的身份驗(yàn)證。這是一種企業(yè)級的安全解決方案,它使企業(yè)能為網(wǎng)絡(luò)資源的使用提供安全。保管理護(hù)和通過企業(yè)Intranet的用戶和通過Internet的遠(yuǎn)程用戶都可以有控制地訪問這些資源。</p><p>  DCE對于安全涉及到4個(gè)方面:</p><p>  1.認(rèn)證(authentication), </p>&

47、lt;p>  2.安全通訊(secure communications), </p><p>  3.授權(quán)(authorization), </p><p>  4.和審計(jì)(auditing)。</p><p>  2.2.3 嵌入式認(rèn)證模塊(PAM)</p><p>  PAM(Pluggable Authentication Mod

48、ules )[6]是由Sun提出的一種用于實(shí)現(xiàn)應(yīng)用程序的認(rèn)證機(jī)制。其核心是一套共享庫,目的是提供一個(gè)框架和一套編程接口,將認(rèn)證工作由程序員交給管理員,PAM允許管理員在多種認(rèn)證方法之間作出選擇,它能夠改變本地認(rèn)證方法而不需要重新編譯與認(rèn)證相關(guān)的應(yīng)用程序,同時(shí)也便于向系統(tǒng)中添加新的認(rèn)證手段。 </p><p>  PAM最初是集成在Solaris中,目前已移植到其它系統(tǒng)中,如Linux、SunOS、HP-UX 9.

49、0等,并在Linux中得到廣泛的應(yīng)用。</p><p>  PAM的設(shè)計(jì)目標(biāo)是:</p><p>  1.管理員可以選擇認(rèn)證方式,從簡單的密碼到智能卡系統(tǒng)。 </p><p>  2.可以為不同的程序配置不同的認(rèn)證機(jī)制。如 使telnet使用 S/Key認(rèn)證。而本機(jī)的 login 缺省使用一般的 UNIX password。 </p><p>

50、;  3.支持程序的顯示方式的需求。如login 需要基于終端的顯示,而dtlogin需要X顯示, 而`ftp' 和 `telnet'需要透過網(wǎng)絡(luò)來認(rèn)證。 </p><p>  4.支持為一個(gè)程序配置同時(shí)使用多種認(rèn)證機(jī)制。 </p><p>  5.可是用戶在使用多種認(rèn)證機(jī)制時(shí),不必為同一個(gè)密碼敲入多次。 </p><p>  6.可是用戶在認(rèn)真時(shí)需

51、要輸入多個(gè)密碼。 </p><p>  7.當(dāng)?shù)讓拥恼J(rèn)證機(jī)制改變時(shí)上層軟件不需要修改。 </p><p>  8.結(jié)構(gòu)為system authentication提供一個(gè)pluggable_ model。 </p><p>  9.必須能滿足現(xiàn)有的服務(wù)需要。 </p><p><b>  PAM的功能包括:</b><

52、;/p><p>  1.加密口令(包括DES以外的算法); </p><p>  2.對用戶進(jìn)行資源限制,防止Dos攻擊; </p><p>  3.允許隨意Shadow口令; </p><p>  4.限制特定用戶在指定時(shí)間從指定地點(diǎn)登錄; </p><p>  5.引入概念"client plug-in ag

53、ents",使PAM支持C/S應(yīng)用中的機(jī)器--機(jī)器認(rèn)證成為可能。 </p><p>  PAM為更有效的認(rèn)證方法的開發(fā)提供了便利,在此基礎(chǔ)上可以很容易地開發(fā)出替代常規(guī)的用戶名加口令的認(rèn)證方法,如智能卡、指紋識別等認(rèn)證方法。</p><p>  2.3 現(xiàn)實(shí)解決方案</p><p>  2.3.1 Broker-Based(基于經(jīng)紀(jì)人) SSO方案</

54、p><p>  這種技術(shù)的特點(diǎn)就是,有一個(gè)集中的認(rèn)證和用戶帳號管理的服務(wù)器。經(jīng)紀(jì)人[7]給被用于進(jìn)一步請求的電子的身份存取。中央數(shù)據(jù)庫的使用減少了管理的代價(jià),并為認(rèn)證提供一個(gè)公共和獨(dú)立的"第三方"。例如Kerberos(如圖2-2所示)、Sesame、IBM KryptoKnight(憑證庫思想)等。</p><p>  圖2-2 Kerberos圖例</p>

55、<p>  該方案采用一個(gè)中央數(shù)據(jù)庫來管理用戶數(shù)據(jù),可能遇到的問題是如果中央數(shù)據(jù)庫當(dāng)機(jī),會(huì)導(dǎo)致所有應(yīng)用系統(tǒng)無法認(rèn)證使用。并且對于舊系統(tǒng)的改造也是使用該方案的一個(gè)挑戰(zhàn)。</p><p>  2.3.2 Agent-Based (基于代理人) SSO方案</p><p>  在一個(gè)基于代理人的解決方案中,有一個(gè)自動(dòng)地為不同的應(yīng)用程序認(rèn)證用戶身份的代理程序。這個(gè)代理程序需要設(shè)計(jì)有不同

56、的功能。比如, 它可以使用口令表或加密密鑰來自動(dòng)地將認(rèn)證的負(fù)擔(dān)從用戶移開。代理人能也被放在服務(wù)器上面,在服務(wù)器的認(rèn)證系統(tǒng)和客戶端認(rèn)證方法之間充當(dāng)一個(gè)"翻譯"。 一個(gè)基于代理人的解決方案的一個(gè)例子是SSH。</p><p>  SSH的英文全稱是Secure Shell。通過使用SSH,你可以把所有傳輸?shù)臄?shù)據(jù)進(jìn)行加密,這樣就能夠防止DNS和IP欺騙。這是一個(gè)為在網(wǎng)上進(jìn)行安全連接的客戶/服務(wù)器類型

57、加密軟件,實(shí)現(xiàn)了一個(gè)密鑰交換協(xié)議,以及主機(jī)及客戶端認(rèn)證協(xié)議。SSH的用戶可以使用包括RSA算法的不同認(rèn)證方法。當(dāng)使用RSA認(rèn)證時(shí),代理程序可以被用于單點(diǎn)登錄。代理程序可以在PC,便攜機(jī),或終端上運(yùn)行,當(dāng)被認(rèn)證身份加入到代理程序中,如果該代理程序有新的子連結(jié)產(chǎn)生,則繼承原有連結(jié)的認(rèn)證。遠(yuǎn)程系統(tǒng)往往需要一個(gè)SSH服務(wù)器,用以與代理程序通信。</p><p>  利用個(gè)性化的安全代理來實(shí)現(xiàn)時(shí),每個(gè)運(yùn)行SSH 的主機(jī)(不

58、管是服務(wù)器還是客戶端)必須有一個(gè)安全代理程序在上面運(yùn)行。例如,要獲得主機(jī)密碼和服務(wù)器密碼,個(gè)性化代理參與如下的兩部分:</p><p>  1.密鑰生成和存儲:當(dāng)服務(wù)器需要生成主機(jī)密碼和服務(wù)器密碼時(shí),它會(huì)要求本地的安全代理來完成這一工作。本地安全代理或是自己生成密鑰對,或是要求另一個(gè)安全代理來生成。SSH協(xié)議并不區(qū)分這兩種情況。生成的密鑰由安全代理保管,在需要時(shí)使用。 </p><p> 

59、 2.身份認(rèn)證:當(dāng)客戶端得到主機(jī)密碼或服務(wù)器密碼,它要傳給自己的安全代理,由安全代理負(fù)責(zé)對密碼進(jìn)行認(rèn)證。作為認(rèn)證結(jié)果,安全代理會(huì)返回"成功"或"失敗"。SSH協(xié)議本身不關(guān)心有關(guān)密碼的細(xì)節(jié)。稍后,如果有新的公鑰算法引入SSH,只需要替換安全代理的部分。</p><p>  2.3.3 Token-Based(基于令牌) SSO方案 </p><p> 

60、 現(xiàn)在被廣泛使用的口令認(rèn)證,比如FTP,郵件服務(wù)器的登陸認(rèn)證,都可被稱為"single-factor "口令的認(rèn)證。這是一種簡單易用的方式,同時(shí)也是一種會(huì)帶來很多安全隱患的方式。比如:易于猜測,很少進(jìn)行更換,一個(gè)口令在多種應(yīng)用當(dāng)中使用等等一會(huì)危及安全的習(xí)慣。再如,在明文傳輸?shù)木W(wǎng)絡(luò)環(huán)境里,經(jīng)常使用并很少更換的口令,更易于被竊取和造成危害。</p><p>  RSA公司提出的一種稱為SecurI

61、D的解決方案。與"single-factor "不同是是它被稱之為"two-factor"雙因素的認(rèn)證。構(gòu)成認(rèn)證的第一個(gè)因素是Personnel Identification Number (PIN),即用戶身份識別碼,這是一串保密的數(shù)字,可由系統(tǒng)管理員訂制。第二個(gè)要素是SecurID token,一個(gè)小型的數(shù)字發(fā)生器,這個(gè)發(fā)生器的時(shí)鐘將與網(wǎng)絡(luò)環(huán)境中提供身份鑒別的服務(wù)器(ACE)保持同步,并且與A

62、CE上的用戶數(shù)據(jù)庫保持映射。數(shù)字發(fā)生器每隔一段時(shí)間(比如一分鐘)產(chǎn)生新的數(shù)字,PIN + 同步時(shí)鐘數(shù)字就是用戶的登錄代碼。</p><p>  解決方案中也有種被稱為WebID的模塊。在Web服務(wù)器上安裝一個(gè)ACE服務(wù)器的代理程序,用來接受SecurID。當(dāng)訪問第一個(gè)需要認(rèn)證的URL時(shí),WebID會(huì)軟件產(chǎn)生并加密一個(gè)標(biāo)識,這個(gè)標(biāo)識將在訪問其他資源的時(shí)候被用到。</p><p>  2.3.

63、4 Agent and Broker-Based SSO方案</p><p>  通過字面我們知道這是Agent 與 Broker的結(jié)合方案。當(dāng)Agent-Base的解決方案和Broker-Base的解決方案被相結(jié)合時(shí),就結(jié)合前者的靈活性和后者的中央式管理兩方面的優(yōu)勢。Agent-Base的好處還在于是減少了改變網(wǎng)絡(luò)應(yīng)用程序的的代價(jià)。這樣,與Kerberos相比,就不需要"kerberize"

64、;化的應(yīng)用程序。</p><p>  2.3.5 Gateway-Based(基于網(wǎng)關(guān)) SSO 方案</p><p>  在Broker-Based的方案中,會(huì)在網(wǎng)絡(luò)中放置一個(gè)"看門狗"的模型。而Gateway-Based則是另一種單點(diǎn)登錄的方法,具體的做法是提供類似象"門"一樣的網(wǎng)關(guān)用以安全的接入到可信的網(wǎng)絡(luò)服務(wù)。網(wǎng)關(guān)可以是防火墻, 或者是專門用

65、于通訊加密的服務(wù)器。在這種方案,所有的響應(yīng)服務(wù)都需要放在被網(wǎng)關(guān)隔離的受信網(wǎng)段里。Client通過網(wǎng)關(guān)進(jìn)行認(rèn)證后獲得接受服務(wù)的受權(quán)。如果在網(wǎng)關(guān)后的服務(wù)能夠通過IP地址進(jìn)行識別,并在網(wǎng)關(guān)上建立一個(gè)基于IP的規(guī)則,而這個(gè)規(guī)則如果與在網(wǎng)關(guān)上的用戶數(shù)據(jù)庫相結(jié)合,網(wǎng)關(guān)就可以被用于單點(diǎn)登錄。網(wǎng)關(guān)將記錄Client的身份不再需要冗余的認(rèn)證請求,便可授權(quán)所要求的服務(wù)。由于網(wǎng)關(guān)可以監(jiān)視并改變應(yīng)用服務(wù)的數(shù)據(jù)流,所以在不修改應(yīng)用服務(wù)的同時(shí),改變認(rèn)證信息,并能提

66、供合適的訪問控制。</p><p>  2.3.6 SAML-Based(基于安全斷言標(biāo)記語言)方案</p><p>  SAML[8]是結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織 (OASIS)推薦的安全服務(wù)標(biāo)準(zhǔn),主要用于相互信任的合作者之間交換安全信息。SAML是一種基于 XML的框架 ,集成了 XML Signature、 XML Encryption和SOAP等其他產(chǎn)業(yè)標(biāo)準(zhǔn)協(xié)議和通信技術(shù)。SAML是聯(lián)

67、合身份認(rèn)證的主要協(xié)議 ,允許企業(yè)發(fā)布在整個(gè)企業(yè)范圍有效的用戶身份認(rèn)證和授權(quán)證書。SAML并沒有設(shè)置中央化、 分散化或聯(lián)合的基礎(chǔ)結(jié)構(gòu)或解決方案 ,相反 ,它用于實(shí)現(xiàn)身份認(rèn)證信息、 授權(quán)信息和屬性信息的交換。SAML并未推出任何新的身份認(rèn)證模式或方法 ,也不是其他安全性標(biāo)準(zhǔn) (如 WS - Security)的替換方案 ,它可以被添加到以前的應(yīng)用程序或 Web瀏覽器應(yīng)用程序中 ,不受任何限制。</p><p>  S

68、AML在解決安全的 Web服務(wù)互操作性整個(gè)問題的過程中起重要作用。除了專用網(wǎng)橋以外 ,互操作性的另一個(gè)必要條件是具備一個(gè)不同層和安全模型都可以解釋的標(biāo)準(zhǔn)憑據(jù)。SAML為安全信息定義了一種標(biāo)準(zhǔn)化格式和一種在不同的應(yīng)用程序之間傳輸安全數(shù)據(jù)的標(biāo)準(zhǔn)化方式。S AML規(guī)范由斷言、 請求/響應(yīng)協(xié)議、 綁定和配置文件這 4個(gè)部分組成。</p><p>  第三章 web單點(diǎn)登錄系統(tǒng)模型結(jié)構(gòu)</p><p&

69、gt;<b>  3.1 系統(tǒng)模型</b></p><p>  3.1.1 總體結(jié)構(gòu)</p><p>  傳統(tǒng)的web應(yīng)用系統(tǒng)和認(rèn)證系統(tǒng)通常都是集成在一起的。用戶在使用某個(gè)需要身份認(rèn)證的web應(yīng)用系統(tǒng)時(shí),系統(tǒng)都會(huì)要求用戶進(jìn)行諸如輸入用戶名和密碼之類的驗(yàn)證操作,并且各個(gè)web系統(tǒng)的認(rèn)證模塊都是孤立的。當(dāng)用戶在web系統(tǒng)1里通過認(rèn)證并使用了相關(guān)服務(wù)后,轉(zhuǎn)向web系統(tǒng)2時(shí),

70、即便他同時(shí)是web系統(tǒng)1和web系統(tǒng)2的合法用戶,他也必須重新在web系統(tǒng)2進(jìn)行身份認(rèn)證。如圖3-1所示:</p><p>  在圖3-1中,web系統(tǒng)1和web系統(tǒng)2擁有同樣的用戶信息數(shù)據(jù)(比如企業(yè)內(nèi)部各個(gè)應(yīng)用系統(tǒng),使用者都是相同的企業(yè)員工),但是因?yàn)楦髯該碛歇?dú)立的認(rèn)證系統(tǒng),導(dǎo)致用戶在使用各個(gè)系統(tǒng)時(shí)必須各自輸入認(rèn)證信息。</p><p>  而在單點(diǎn)登錄環(huán)境下,用戶和應(yīng)用系統(tǒng)之間的認(rèn)證方

71、式[9]就有很大的不同了。如圖3-2所示:</p><p>  對比圖3-1,可以清楚的發(fā)現(xiàn),在圖3-2中兩個(gè)應(yīng)用系統(tǒng)各自的認(rèn)證系統(tǒng)被剔除了,取而代之的是一個(gè)公用的認(rèn)證系統(tǒng)。不管用戶訪問應(yīng)用系統(tǒng)1還是應(yīng)用系統(tǒng)2,他都將先通過公有的認(rèn)證系統(tǒng)的認(rèn)證,而在通過認(rèn)證系統(tǒng)的認(rèn)證后,無論用戶是在系統(tǒng)1還是系統(tǒng)2之間跳轉(zhuǎn),甚至更多的應(yīng)用系統(tǒng),都不需要再進(jìn)行身份認(rèn)證。</p><p>  3.1.2 詳細(xì)

72、結(jié)構(gòu)</p><p>  在對web單點(diǎn)登錄系統(tǒng)有了整體認(rèn)識后,下面對系統(tǒng)進(jìn)行詳細(xì)的分析。假定我們稱身份認(rèn)證服務(wù)中心為SSO,身份認(rèn)證服務(wù)客戶端為PSO。如圖3-3所示。</p><p>  首先用戶訪問某一個(gè)應(yīng)用程序服務(wù),系統(tǒng)檢查用戶是否登錄或者持有SSO票據(jù),如果用戶沒有登錄,PSO則調(diào)用轉(zhuǎn)發(fā)服務(wù),將用戶重定向到SSO登錄頁面。</p><p>  用戶輸入授權(quán)

73、的合法認(rèn)證信息,SSO認(rèn)證服務(wù)通過查詢數(shù)據(jù)庫的用戶相關(guān)信息驗(yàn)證用戶,驗(yàn)證無誤后,SSO將調(diào)用SSO票據(jù)生成服務(wù)來為該用戶生成SSO票據(jù),然后將該票據(jù)附在之前PSO應(yīng)用程序的URL后,并且調(diào)用重定向服務(wù),將瀏覽器重定向到該P(yáng)SO應(yīng)用程序。</p><p>  此時(shí)PSO應(yīng)用程序再次被用戶訪問,與之前不同的是訪問URL增加了SSO生成的登錄票據(jù)。PSO解析該URL,從中截獲SSO票據(jù),并進(jìn)行驗(yàn)證。同過驗(yàn)證后,PSO將

74、調(diào)用PSO生成服務(wù)來生成該用戶對該P(yáng)SO應(yīng)用程序的訪問票據(jù)。此后只要用戶持有該P(yáng)SO票據(jù),無需到SSO驗(yàn)證即可使用該應(yīng)用程序提供的相關(guān)服務(wù)。</p><p>  假定用戶訪問并通過某一個(gè)應(yīng)用程序身份認(rèn)證后繼續(xù)訪問另一個(gè)處于相同認(rèn)證系統(tǒng)保護(hù)下的應(yīng)用程序。傳統(tǒng)的認(rèn)證方式必然需要用戶重新輸入認(rèn)證信息進(jìn)行身份認(rèn)證。而在單點(diǎn)登錄環(huán)境下,用戶則省略了這些繁瑣操作。</p><p>  用戶同某一應(yīng)用程

75、序認(rèn)證后,訪問另一個(gè)應(yīng)用程序時(shí)。應(yīng)用程序同用戶訪問第一個(gè)應(yīng)用程序時(shí)一樣對用戶進(jìn)行身份認(rèn)證,此時(shí)用戶并沒有該應(yīng)用程序的PSO票據(jù),換言之就是用戶沒有在該應(yīng)用程序登陸過。此時(shí)應(yīng)用程序?qū)⒂脩糁囟ㄏ虻絊SO進(jìn)行認(rèn)證。SSO在接收到該應(yīng)用程序送來的認(rèn)證請求消息后,發(fā)現(xiàn)該用戶已經(jīng)合法登錄過其他應(yīng)用程序并持有SSO票據(jù),于是SSO將用戶的SSO票據(jù)附在請求認(rèn)證的應(yīng)用程序URL后面,并重定向到URL。</p><p>  應(yīng)用程

76、序截取到URL后附加的SSO票據(jù)并進(jìn)行驗(yàn)證,驗(yàn)證通過后調(diào)用PSO票據(jù)生成服務(wù)生成用戶的PSO票據(jù)。此時(shí)用戶就可以訪問該應(yīng)用程序的相關(guān)服務(wù)了。</p><p>  3.2 身份認(rèn)證服務(wù)中心</p><p><b>  3.2.1 功能</b></p><p>  通過上面的介紹,實(shí)際上本文介紹的web單點(diǎn)登錄模型一個(gè)基于Ticket的認(rèn)證方式[1

77、0]。User想要獲取PSO端所提供的服務(wù)資源,先得通過PSO端的認(rèn)證;而認(rèn)證的先決條件是User向PSO端提供從SSO端獲得的一個(gè)SSO票據(jù)??梢赃@么說,SSO票據(jù)是User進(jìn)入某個(gè)PSO端應(yīng)用服務(wù)的一張門票。而這張門票必須從一個(gè)合法的票據(jù)頒發(fā)機(jī)構(gòu)獲得,這個(gè)頒發(fā)機(jī)構(gòu)就是所有PSO端所認(rèn)同的身份認(rèn)證服務(wù)中心(SSO), 同時(shí)這張票據(jù)具有超強(qiáng)的防偽標(biāo)識:它是被SSO加密的。對User來說, 獲得SSO票據(jù)是整個(gè)認(rèn)證過程中最為關(guān)鍵的部分。如

78、圖3-4。 </p><p>  身份認(rèn)證服務(wù)中心無疑是單點(diǎn)登錄系統(tǒng)中最重要的模塊之一。它承擔(dān)著對用戶身份的合法性驗(yàn)證和分發(fā)合法身份消息的任務(wù)。從功能上說主要有一下幾點(diǎn):</p><p>  1.負(fù)責(zé)對用戶進(jìn)行身份認(rèn)證。這一點(diǎn)同傳統(tǒng)的應(yīng)用系統(tǒng)中的身份認(rèn)證是相同的。身份認(rèn)證服務(wù)中心連接著存放用戶信息的數(shù)據(jù)庫。當(dāng)用戶提交認(rèn)證信息(通常是用戶名和密碼)后,身份認(rèn)證中心通過查詢數(shù)據(jù)庫中存放的用戶信

79、息,并進(jìn)行比對來驗(yàn)證用戶的身份是否合法。</p><p>  2.負(fù)責(zé)SSO票據(jù)的生成。這是身份認(rèn)證服務(wù)中心一個(gè)較傳統(tǒng)應(yīng)用系統(tǒng)中的身份認(rèn)證不同的地方之一。當(dāng)身份認(rèn)證服務(wù)中心驗(yàn)證了用戶的身份合法后,將調(diào)用SSO票據(jù)生成服務(wù)來生成用戶通過身份認(rèn)證服務(wù)客戶端(PSO)認(rèn)證所必需的SSO票據(jù)。通常SSO票據(jù)具備PSO確認(rèn)用戶合法的相關(guān)信息,但出于安全因素不直接包含用戶的身份認(rèn)證信息,并且經(jīng)過一定的加密來防止被非法獲取。&

80、lt;/p><p>  3.負(fù)責(zé)處理用戶在不同應(yīng)用系統(tǒng)間切換時(shí)的身份認(rèn)證。單點(diǎn)登錄的特點(diǎn)就是用戶在通過身份認(rèn)證侯,訪問另一應(yīng)用系統(tǒng)時(shí)不需要再次輸入身份認(rèn)證信息。當(dāng)用戶訪問某一個(gè)應(yīng)用系統(tǒng)并通過認(rèn)證中心認(rèn)證后,繼續(xù)訪問另一個(gè)應(yīng)用系統(tǒng)時(shí),該應(yīng)用系統(tǒng)端的PSO將用戶重定向到SSO端進(jìn)行用戶身份認(rèn)證,此時(shí)身份認(rèn)證服務(wù)中心檢測到該用戶已經(jīng)通過身份認(rèn)證。然后身份認(rèn)證服務(wù)中心將該用戶之前產(chǎn)生的SSO票據(jù)重新發(fā)送給該應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)

81、接收到SSO票據(jù)后即確認(rèn)了用戶的合法身份。此功能就實(shí)現(xiàn)了單點(diǎn)登錄系統(tǒng)環(huán)境下,用戶在多個(gè)應(yīng)用系統(tǒng)進(jìn)行切換時(shí)不需要多次輸入認(rèn)證信息進(jìn)行身份認(rèn)證的繁瑣步驟。</p><p><b>  3.2.2 結(jié)構(gòu)</b></p><p>  通過前面的分析,對單點(diǎn)登錄系統(tǒng)中的身份認(rèn)證服務(wù)中心有一定的認(rèn)識。下面通過分析其結(jié)構(gòu)來進(jìn)一步了解身份認(rèn)證服務(wù)中心的內(nèi)部。如圖3-5。</p&

82、gt;<p>  分析上面的結(jié)構(gòu)圖,用戶訪問身份認(rèn)證服務(wù)中心有兩種情況:</p><p>  1.有SSO票據(jù)狀態(tài)訪問。即用戶之前在訪問某個(gè)應(yīng)用系統(tǒng)時(shí)已經(jīng)通過身份認(rèn)證服務(wù)中心的認(rèn)證,再訪問另一個(gè)應(yīng)用系統(tǒng)時(shí),該應(yīng)用系統(tǒng)需要對用戶身份進(jìn)行驗(yàn)證。此時(shí)第二個(gè)應(yīng)用系統(tǒng)將用戶重定向到身份認(rèn)證服務(wù)中心進(jìn)行驗(yàn)證,SSO檢查該用戶時(shí)發(fā)現(xiàn)該用戶已經(jīng)登陸過,并持有SSO票據(jù),于是不再需要用戶輸入用戶名和密碼等相關(guān)身份信息

83、,而直接將SSO票據(jù)附加到請求驗(yàn)證的第二個(gè)應(yīng)用系統(tǒng)的URL,然后重定向到該URL交由PSO端進(jìn)行后續(xù)操作。</p><p>  2.無SSO票據(jù)狀態(tài)訪問。即用戶是第一次訪問身份認(rèn)證服務(wù)中心。此時(shí)身份認(rèn)證服務(wù)中心要求用戶輸入用戶名和密碼等之類的身份認(rèn)證信息,然后SSO通過查詢數(shù)據(jù)庫對該信息進(jìn)行比對認(rèn)證。如果用戶信息通過校驗(yàn),則身份認(rèn)證服務(wù)中心調(diào)用SSO票據(jù)生成服務(wù)為用戶生成SSO票據(jù)。然后將該SSO票據(jù)附加到請求驗(yàn)

84、證的PSO端URL上,并重定向到該URL,繼而交給PSO進(jìn)行后續(xù)操作。</p><p>  3.3 身份認(rèn)證服務(wù)客戶端</p><p><b>  3.3.1 功能</b></p><p>  與身份認(rèn)證服務(wù)中心配套的是身份認(rèn)證服務(wù)客戶端(PSO),它也是整個(gè)單點(diǎn)登錄系統(tǒng)中非常重要的部分。通常來講,身份認(rèn)證服務(wù)客戶端是嵌入應(yīng)用系統(tǒng)中的一個(gè)模塊。

85、它與應(yīng)用系統(tǒng)的權(quán)限系統(tǒng)相配合來達(dá)到對用戶訪問服務(wù)資源的控制。實(shí)際上,身份認(rèn)證服務(wù)客戶端在應(yīng)用系統(tǒng)和身份認(rèn)證服務(wù)中心扮演中間人的角色。</p><p>  一方面,用戶訪問應(yīng)用系統(tǒng)提供的需要認(rèn)證的服務(wù)或資源時(shí),應(yīng)用系統(tǒng)首先檢查用戶是否登錄,如未登錄,則調(diào)用身份認(rèn)證服務(wù)客戶端模塊準(zhǔn)備進(jìn)行認(rèn)證操作。此時(shí),身份認(rèn)證服務(wù)客戶端模塊記錄下當(dāng)前用戶訪問URL,并將用戶瀏覽器重定向到身份認(rèn)證服務(wù)中心的登錄頁面,進(jìn)行登錄操作。&l

86、t;/p><p>  另一方面,當(dāng)身份認(rèn)證服務(wù)中心驗(yàn)證了用戶身份,生成了SSO票據(jù),并且將用戶瀏覽器重定向到附加了SSO票據(jù)的原請求認(rèn)證URL后,此時(shí)身份認(rèn)證服務(wù)客戶端截獲到URL中有SSO票據(jù),然后攜帶該票據(jù)到身份認(rèn)證服務(wù)中心進(jìn)行SSO票據(jù)合法性驗(yàn)證。驗(yàn)證通過后,身份認(rèn)證服務(wù)客戶端即授權(quán)用戶(或者通知應(yīng)用系統(tǒng)的權(quán)限系統(tǒng)進(jìn)行授權(quán))訪問相應(yīng)服務(wù)資源。</p><p><b>  3.3

87、.2 結(jié)構(gòu)</b></p><p>  下面結(jié)合圖例對身份認(rèn)證服務(wù)客戶端進(jìn)行結(jié)構(gòu)分析。如圖3-6所示: </p><p>  通過前面的分析,對單點(diǎn)登錄系統(tǒng)中的身份認(rèn)證服務(wù)客戶端有一定的認(rèn)識。下面通過分析其結(jié)構(gòu)來進(jìn)一步了解身份認(rèn)證服務(wù)中心的內(nèi)部。如圖3-6。</p><p>  分析上面的身份認(rèn)證服務(wù)客戶端結(jié)構(gòu)圖,可以體現(xiàn)出身份認(rèn)證服務(wù)客戶端的中間人特點(diǎn)

88、。同樣,訪問(系統(tǒng)內(nèi)部模塊間的調(diào)用)身份認(rèn)證服務(wù)客戶端也有兩種情況:</p><p>  1.請求URL不包含SSO票據(jù)??赡芮闆r是用戶第一次訪問應(yīng)用系統(tǒng)或者PSO票據(jù)失效,需要重新認(rèn)證。此時(shí)身份認(rèn)證服務(wù)客戶端的工作比較簡單,只需要簡單的將用戶瀏覽器重定向到身份認(rèn)證服務(wù)中心的登錄頁,讓用戶進(jìn)行登錄即可。</p><p>  2.請求URL包含SSO票據(jù)。這表明用戶已經(jīng)(正常情況下)在身份認(rèn)

89、證服務(wù)中心進(jìn)行了登錄操作,該URL是身份認(rèn)證服務(wù)中心重定向而來。此時(shí)身份認(rèn)證服務(wù)客戶端分析并截獲URL中的SSO票據(jù)。然后調(diào)用相關(guān)模塊服務(wù)到身份認(rèn)證服務(wù)中心驗(yàn)證該SSO票據(jù)是否合法。如果是非法SSO票據(jù),則將用戶瀏覽器重定向到身份認(rèn)證服務(wù)中心登錄頁面要求用戶重新進(jìn)行登錄操作;如果是合法票據(jù),通過驗(yàn)證后,身份認(rèn)證服務(wù)客戶端立即調(diào)用PSO票據(jù)生成模塊來生成用戶訪問該應(yīng)用系統(tǒng)的服務(wù)和資源所需要的憑證,即PSO票據(jù)。最后身份認(rèn)證服務(wù)客戶端返回用

90、戶之前所請求的服務(wù)或資源。</p><p>  3.4 系統(tǒng)運(yùn)作流程</p><p>  在對單點(diǎn)登錄系統(tǒng)模型結(jié)構(gòu)進(jìn)行了簡單分析后,下面通過一個(gè)模擬情景總結(jié)一下單點(diǎn)登錄系統(tǒng)的運(yùn)作流程。該情景模擬企業(yè)人事管理系統(tǒng)[11]。在這之前先來看一看傳統(tǒng)的用戶認(rèn)證流程,如圖3-7所示:</p><p>  傳統(tǒng)的認(rèn)證方式符合人們的常規(guī)思考。分為以下幾個(gè)步驟:</p>

91、<p>  1.用戶打開人事管理系統(tǒng)登錄頁(或者系統(tǒng)主頁登錄處)。</p><p>  2.用戶輸入用戶名和密碼,并提交登錄請求。</p><p>  3.人事系統(tǒng)登錄驗(yàn)證模塊接收到用戶填寫的賬號信息后,查詢數(shù)據(jù)庫,比對用戶名和密碼是否合法。</p><p>  4.如果用戶帳戶正確,則系統(tǒng)返回系統(tǒng)主界面,此時(shí)用戶已具有相應(yīng)授權(quán)。如果用戶帳戶錯(cuò)

92、誤,則重新返回登錄頁面。</p><p>  接下來是使用單點(diǎn)登錄系統(tǒng)后的認(rèn)證流程。如圖3-8所示:</p><p>  使用了單點(diǎn)登錄認(rèn)證方式的系統(tǒng)運(yùn)作流行相比較未使用單點(diǎn)登錄的系統(tǒng)來說要復(fù)雜一些:</p><p>  1.用戶打開人事管理系統(tǒng)主頁,準(zhǔn)備進(jìn)入系統(tǒng)。</p><p>  2.嵌入到系統(tǒng)的單點(diǎn)登錄PSO模塊檢測到用戶沒有登錄過,

93、即未持有PSO票據(jù)或者SSO票據(jù)。</p><p>  3.PSO模塊將用戶瀏覽器重定向到身份認(rèn)證服務(wù)中心的登錄頁面。</p><p>  4.用戶輸入用戶名和密碼等認(rèn)證信息并提交。</p><p>  5.身份認(rèn)證服務(wù)中心連接數(shù)據(jù)庫對用戶輸入的認(rèn)證信息進(jìn)行比對,如果通過驗(yàn)證,則調(diào)用身份認(rèn)證服務(wù)中心的SSO票據(jù)生成模塊生成該用戶的SSO票,并附加到請求認(rèn)證服務(wù)的UR

94、L后,然后重定向該URL;否則返回登錄頁面要求用戶重新輸入認(rèn)證信息。</p><p>  6.身份認(rèn)證服務(wù)客戶端接受到URL后面附加的SSO票據(jù)后,將攜帶該票據(jù)到身份認(rèn)證服務(wù)中心進(jìn)行驗(yàn)證。</p><p>  7.如果通過驗(yàn)證,身份認(rèn)證服務(wù)客戶端調(diào)用PSO票據(jù)生成模塊來生成該用戶的PSO票據(jù)授權(quán)用戶訪問權(quán)限,并返回到系統(tǒng)主頁面;否則重新返回身份認(rèn)證服務(wù)中心登錄頁面。</p>

95、<p><b>  第四章 系統(tǒng)實(shí)現(xiàn)</b></p><p>  基于前面對單點(diǎn)登錄系統(tǒng)理論的學(xué)習(xí)研究和分析,接下來本章將進(jìn)行程序設(shè)計(jì),開發(fā)一個(gè)單點(diǎn)登錄系統(tǒng)。該系統(tǒng)將具備基本的單點(diǎn)認(rèn)證功能。</p><p><b>  4.1 需求分析</b></p><p>  4.1.1 功能需求</p>&

96、lt;p>  本系統(tǒng)將實(shí)現(xiàn)如下功能:</p><p>  1.用戶注冊功能:允許用戶注冊統(tǒng)一的通行證,可以在系統(tǒng)提供的兩個(gè)示例網(wǎng)站中使用。</p><p>  2.單點(diǎn)登錄功能:即用戶在本系統(tǒng)提供的兩個(gè)示例中的任意一個(gè)示例網(wǎng)站中登錄成功后,無需再另一個(gè)示例網(wǎng)站中進(jìn)行登錄操作即可訪問示例網(wǎng)站的內(nèi)容。</p><p>  3.用戶修改資料功能:允許用戶修改注冊資料

97、及密碼。</p><p>  4.后臺管理用戶功能:管理員可以查看、修改和刪除注冊用戶。</p><p>  4.1.2 性能需求</p><p>  1.用戶角度:盡可能提高系統(tǒng)響應(yīng)時(shí)間;避免系統(tǒng)的代碼級錯(cuò)誤;友好的錯(cuò)誤提示。</p><p>  2.系統(tǒng)角度:由于多個(gè)應(yīng)用系統(tǒng)的身份認(rèn)證集中到一起進(jìn)行處理,所以模擬高訪問量情況下,web服務(wù)

98、器需要承受高強(qiáng)度的負(fù)荷,在web服務(wù)器操作系統(tǒng)、數(shù)據(jù)庫和網(wǎng)站開發(fā)平臺的選擇上要綜合考慮。本系統(tǒng)選擇了java平臺作為網(wǎng)站開發(fā)語言,數(shù)據(jù)庫選擇了開源數(shù)據(jù)庫MYSQL。</p><p>  3.開發(fā)角度:代碼應(yīng)盡量符合規(guī)范;選擇最優(yōu)算法;數(shù)據(jù)庫設(shè)計(jì)要合理;數(shù)據(jù)庫查詢要盡量優(yōu)化。</p><p>  4.1.3 運(yùn)行需求</p><p>  1.硬件需求:一般PC機(jī),筆記

99、本</p><p><b>  2.軟件需求:</b></p><p>  a. UNIX或WINDOWS服務(wù)器操作系統(tǒng)</p><p>  b. TOMCAT6.0+MYSQL5.0+JDK6</p><p>  c. IE或FIREFOX等瀏覽器支持</p><p>  4.2 開發(fā)平臺及工具

100、</p><p>  JSP[12],全稱為Java Server Pages / Servlet ,JSP和Servlet要放在一起講,是因?yàn)樗鼈兌际荢un公司的J2EE(Java 2 platform Enterprise Edition)應(yīng)用體系中的一部分。Servlet的形式和前面講的CGI差不多,它是HTML代碼和后臺程序分開的。它們的啟動(dòng)原理也差不多,都是服務(wù)器接到客戶端的請求后,進(jìn)行應(yīng)答。不同的是,

101、CGI對每個(gè)客戶請求都打開一個(gè)進(jìn)程(Process),而Servlet卻在響應(yīng)第一個(gè)請求的時(shí)候被載入,一旦Servlet被載入,便處于已執(zhí)行狀態(tài)。對于以后其他用戶的請求,它并不打開進(jìn)程,而是打開一個(gè)線程(Thread),將結(jié)果發(fā)送給客戶。由于線程與線程之間可以通過生成自己的父線程(Parent Thread)來實(shí)現(xiàn)資源共享,這樣就減輕了服務(wù)器的負(fù)擔(dān),所以,Java Servlet可以用來做大規(guī)模的應(yīng)用服務(wù)。 </p>&l

102、t;p>  雖然在形式上JSP和ASP或PHP看上去很相似——都可以被內(nèi)嵌在HTML代碼中。但是,它的執(zhí)行方式和ASP或PHP完全不同。在JSP被執(zhí)行的時(shí)候,JSP文件被JSP解釋器(JSP Parser)轉(zhuǎn)換成Servlet代碼,然后Servlet代碼被Java編譯器編譯成 .class 字節(jié)文件,這樣就由生成的Servlet來對客戶端應(yīng)答。所以,JSP可以看做是Servlet的腳本語言(Script Language)版。 &

103、lt;/p><p>  由于JSP/Servlet都是基于Java的,所以它們也有Java語言的最大優(yōu)點(diǎn)——平臺無關(guān)性,也就是所謂的“一次編寫,隨處運(yùn)行(WORA – Write Once, Run Anywhere)”。除了這個(gè)優(yōu)點(diǎn),JSP/Servlet的效率以及安全性也是相當(dāng)驚人的。因此,JSP/Servlet雖然在國內(nèi)目前的應(yīng)用并不廣泛,但是其前途不可限量。 </p><p>  在調(diào)

104、試JSP代碼時(shí),如果程序出錯(cuò),JSP服務(wù)器會(huì)返回出錯(cuò)信息,并在瀏覽器中顯示。這時(shí),由于JSP是先被轉(zhuǎn)換成Servlet后再運(yùn)行的,所以,瀏覽器中所顯示的代碼出錯(cuò)的行數(shù)并不是JSP源代碼的行數(shù),而是指轉(zhuǎn)換后的Servlet程序代碼的行數(shù)。這給調(diào)試代碼帶來一定困難。所以,在排除錯(cuò)誤時(shí),可以采取分段排除的方法(在可能出錯(cuò)的代碼前后輸出一些字符串,用字符串是否被輸出來確定代碼段從哪里開始出錯(cuò)),逐步縮小出錯(cuò)代碼段的范圍,最終確定錯(cuò)誤代碼的位置。

105、</p><p>  MySQL是一個(gè)小型關(guān)系型數(shù)據(jù)庫管理系統(tǒng),開發(fā)者為瑞典MySQL AB公司。在2008年1月16號被Sun公司收購。目前MySQL被廣泛地應(yīng)用在Internet上的中小型網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點(diǎn),許多中小型網(wǎng)站為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫。MySQL的官方網(wǎng)站的網(wǎng)址是:www.mysql.com。</p>

106、<p>  MyEclipse企業(yè)級工作平臺(MyEclipse Enterprise Workbench ,簡稱MyEclipse)是對Eclipse IDE的擴(kuò)展,利用它我們可以在數(shù)據(jù)庫和J2EE的開發(fā)、發(fā)布,以及應(yīng)用程序服務(wù)器的整合方面極大的提高工作效率。它是功能豐富的J2EE集成開發(fā)環(huán)境,包括了完備的編碼、調(diào)試、測試和發(fā)布功能,完整支持HTML, Struts, JSF, CSS, JavaScript, SQL, H

107、ibernate。</p><p>  在結(jié)構(gòu)上,MyEclipse的特征可以被分為7類:</p><p><b>  1. J2EE模型</b></p><p>  2. WEB開發(fā)工具</p><p>  3. EJB開發(fā)工具</p><p>  4. 應(yīng)用程序服務(wù)器的連接器</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論