999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

統(tǒng)一登錄框架設(shè)計(jì)及其與Resin容器的融合實(shí)現(xiàn)

2007-01-01 00:00:00續(xù)閻保平季永志吳開超

摘要:設(shè)計(jì)一種結(jié)構(gòu)將多個(gè)獨(dú)立的Web應(yīng)用集成為一個(gè)整體,使用戶僅需一次登錄即可完成在所有應(yīng)用下的認(rèn)證,實(shí)現(xiàn)各應(yīng)用間的自由轉(zhuǎn)換。結(jié)合Resin容器自身的認(rèn)證授權(quán)機(jī)制,通過設(shè)計(jì)實(shí)現(xiàn)Resin下Authenticator類的一個(gè)子類SSOAuthenticator,使Resin容器與統(tǒng)一登錄框架達(dá)到無縫融合,保證用戶使用的透明性。

關(guān)鍵詞:統(tǒng)一登錄; Resin容器; Authenticator

中圖法分類號(hào):TP393.09文獻(xiàn)標(biāo)識(shí)碼:A

文章編號(hào):1001-3695(2007)01-0272-03

統(tǒng)一登錄框架是目前備受關(guān)注的新型登錄模式,通過提供對(duì)多個(gè)獨(dú)立Web應(yīng)用的整合策略,使用戶可以實(shí)現(xiàn)框架內(nèi)的“一次登錄,處處暢通”。與傳統(tǒng)的登錄模式相比,它具有三個(gè)方面的優(yōu)勢(shì):

①減少了用戶依次對(duì)各個(gè)應(yīng)用進(jìn)行登錄的操作時(shí)間,從而降低了人工操作的失誤率;

②減少了用戶需要記憶的密碼信息對(duì),從而提高了系統(tǒng)的安全性;

③對(duì)多個(gè)應(yīng)用統(tǒng)一身份管理,方便了系統(tǒng)管理員對(duì)用戶身份的管理操作,提高了系統(tǒng)的反饋性能。

Resin是Caucho公司開發(fā)的一套支持J2EE標(biāo)準(zhǔn)的Web容器。由于它的簡潔易配和對(duì)XML技術(shù)的良好支持性,使其在中小應(yīng)用開發(fā)中得到了廣泛的應(yīng)用。用戶在開發(fā)時(shí),利用Resin自身提供的認(rèn)證授權(quán)機(jī)制,只需進(jìn)行少量配置,就可以實(shí)現(xiàn)一套完整的認(rèn)證授權(quán)系統(tǒng)。因此,利用Resin下已有的認(rèn)證授權(quán)體系,將Resin納入到統(tǒng)一框架中,可以將Resin的易配置性和框架的通用性相結(jié)合,提高統(tǒng)一登錄框架的實(shí)用效能。

出于以上目的,本文給出一個(gè)統(tǒng)一登錄框架的總體設(shè)計(jì),并針對(duì)Resin下已有應(yīng)用,遵照Resin的認(rèn)證授權(quán)體系,提供Resin與框架的無縫融合實(shí)現(xiàn)。

1統(tǒng)一登錄框架的總體設(shè)計(jì)與實(shí)現(xiàn)

1.1設(shè)計(jì)思想

統(tǒng)一登錄框架在設(shè)計(jì)時(shí)需要考慮的主要方面有:

①一致性,用戶在框架內(nèi)的各個(gè)應(yīng)用的身份認(rèn)證應(yīng)具有一致性,在應(yīng)用間轉(zhuǎn)換訪問不需要進(jìn)行重復(fù)登錄;

②通用性,框架應(yīng)能提供對(duì)多種應(yīng)用環(huán)境的支持,能夠?qū)崿F(xiàn)無差別的統(tǒng)一訪問;

③易用性,在將已有應(yīng)用納入框架時(shí),應(yīng)該保證盡量減少對(duì)應(yīng)用的改造工作,減少用戶的使用配置,方便用戶使用。

基于以上三個(gè)方面的考慮,本框架決定采用基于請(qǐng)求代理的策略實(shí)現(xiàn)(圖1)。基本思想是建立一個(gè)統(tǒng)一的Portal服務(wù)器來代理所有的應(yīng)用站點(diǎn)的Web請(qǐng)求,由這個(gè)Portal服務(wù)器來統(tǒng)一處理用戶的認(rèn)證登錄。這里需要說明的是盡管這個(gè)Portal服務(wù)器統(tǒng)一代理所有的Web請(qǐng)求,但實(shí)際上真正進(jìn)行處理的僅僅是用戶認(rèn)證方面的相關(guān)請(qǐng)求,對(duì)于已認(rèn)證用戶的Web請(qǐng)求,僅僅是通過URL轉(zhuǎn)發(fā)將請(qǐng)求傳給應(yīng)用站點(diǎn)。基于這種策略當(dāng)未認(rèn)證用戶訪問某應(yīng)用站點(diǎn)時(shí),Web請(qǐng)求將先被傳入Portal服務(wù)器進(jìn)行用戶認(rèn)證,用戶完成認(rèn)證后再由Portal服務(wù)器將請(qǐng)求轉(zhuǎn)回應(yīng)用站點(diǎn),并將用戶的身份信息包括在請(qǐng)求中一并轉(zhuǎn)回。

圖1基于請(qǐng)求代理的認(rèn)證策略

基于這種策略實(shí)現(xiàn)認(rèn)證需要建立服務(wù)器與應(yīng)用站點(diǎn)間的信任關(guān)系,以便認(rèn)證后的用戶身份能夠被應(yīng)用承認(rèn)。其實(shí)現(xiàn)機(jī)制簡潔,結(jié)構(gòu)框架更靈活,對(duì)原有Web應(yīng)用的改造較少,能夠充分滿足對(duì)于框架一致性、通用性和易用性的設(shè)計(jì)要求。

1.2交互協(xié)議的約定

為更好地保證通用性,實(shí)現(xiàn)Portal服務(wù)器與應(yīng)用間的信息交互,我們?yōu)榭蚣苤贫嘶贖TTP的交互協(xié)議。協(xié)議主要是針對(duì)Portal端與應(yīng)用端的各種交互操作,約定信息格式,以保證任何實(shí)現(xiàn)協(xié)議規(guī)定的應(yīng)用均可以納入到統(tǒng)一登錄框架中。

下面針對(duì)框架下六種操作給出相應(yīng)的具體規(guī)定(注:在協(xié)議中出現(xiàn)的代稱如果拼寫相同,則在沒有特殊說明的情況下具有相同意思):

(1)應(yīng)用站點(diǎn)需要對(duì)用戶身份進(jìn)行認(rèn)證時(shí),將用戶請(qǐng)求重定向到Portal服務(wù)器。重定向請(qǐng)求應(yīng)該遵從以下格式:

url=http://portalURL?reqURL=appSiteURLmaxinterval=session ̄ActiveTimecode=randomNum

其中portalURL為Portal站點(diǎn)的URL地址,appSiteURL為本應(yīng)用站點(diǎn)中用戶請(qǐng)求資源的URL地址(下同),sessionActiveTime為應(yīng)用站點(diǎn)會(huì)話(Session)保持時(shí)間,randomNum為認(rèn)證源碼,可以為隨機(jī)數(shù)或者時(shí)間戳等。應(yīng)用站點(diǎn)通過客戶端瀏覽器的臨時(shí)Cookie或其他方式保存此處的認(rèn)證源碼,以便在Portal服務(wù)器完成認(rèn)證將請(qǐng)求返回時(shí),可以進(jìn)行認(rèn)證碼的校驗(yàn),從而確定用戶身份的合法性。

(2)用戶在Portal端認(rèn)證或注冊(cè)完成后,請(qǐng)求重定向返回應(yīng)用站點(diǎn)。

這個(gè)時(shí)候應(yīng)用站點(diǎn)需要能夠識(shí)別出Portal端返回的正確認(rèn)證的用戶信息,并能夠通過檢驗(yàn)認(rèn)證碼來確保該認(rèn)證信息的合法性。

返回請(qǐng)求的格式為

url=http://appSiteURL?logIdentify=***userID=****code=*****

其中l(wèi)ogIdentify的值為用戶登錄Portal服務(wù)器時(shí)產(chǎn)生的唯一標(biāo)志,userID的值為用戶登錄所用的用戶名,code為Portal端處理后返回的認(rèn)證碼。為了防止有人惡意假冒,只有通過了認(rèn)證碼校驗(yàn)的身份信息才為有效信息。

(3)當(dāng)用戶登錄并與應(yīng)用站點(diǎn)之間建立了會(huì)話連接后,若由于某種原因(如長時(shí)間在該應(yīng)用站點(diǎn)沒有動(dòng)作)導(dǎo)致用戶在應(yīng)用站點(diǎn)的會(huì)話過期(Session Timeout),則當(dāng)用戶再次請(qǐng)求訪問該應(yīng)用站點(diǎn)的受限資源,應(yīng)用站點(diǎn)重新將用戶請(qǐng)求重定向到Portal端認(rèn)證服務(wù)器。

此時(shí)重定向URL格式與操作(1)相同。

(4)Portal對(duì)用戶全局會(huì)話狀態(tài)的定期查詢操作。

本操作主要是判斷已登錄用戶在各個(gè)應(yīng)用是否仍然處于有效會(huì)話期,以便及時(shí)更新Portal上的用戶登錄日志。Portal將通過重定向請(qǐng)求的方式在應(yīng)用站點(diǎn)之間查詢用戶的會(huì)話狀態(tài)。

查詢請(qǐng)求的格式為

url=http://appSiteURL?action=query

其中action=query標(biāo)志此請(qǐng)求是全局狀態(tài)查詢動(dòng)作。

當(dāng)應(yīng)用站點(diǎn)接收到這種請(qǐng)求時(shí),要求對(duì)全局狀態(tài)查詢的動(dòng)作作出反應(yīng)。生成反饋格式為

url=http://portalURL?action=queryreqURL=appSiteURL maxinterval=sessionActiveTime

其中sessionActiveTime為用戶的會(huì)話保持時(shí)間,由用戶在應(yīng)用站點(diǎn)的會(huì)話狀態(tài)決定。當(dāng)用戶是經(jīng)過認(rèn)證的有效用戶且在該應(yīng)用站點(diǎn)仍然處于有效會(huì)話期時(shí),sessionActiveTime的值為該應(yīng)用站點(diǎn)的默認(rèn)會(huì)話保持時(shí)間;當(dāng)用戶在應(yīng)用站點(diǎn)會(huì)話已過期時(shí), sessionActiveTime值為0。在此處,反饋URL中action=query標(biāo)志本次請(qǐng)求是對(duì)全局狀態(tài)查詢的反饋。

(5)用戶注銷操作。

用戶觸發(fā)注銷操作后,瀏覽器被重定向到應(yīng)用站點(diǎn)。重定向請(qǐng)求的格式為

url=http://appSiteURL?action=logout

其中 action=logout表明是請(qǐng)求為注銷操作。

當(dāng)應(yīng)用站點(diǎn)接收到這種注銷指示后,中止對(duì)應(yīng)用戶在該應(yīng)用站點(diǎn)的會(huì)話,同時(shí)生成請(qǐng)求反饋,格式為

url=http://portalURL?action=logout

其中action=logout表示本次重定向是對(duì)注銷操作的反饋。

(6)Portal對(duì)應(yīng)用站點(diǎn)連接狀態(tài)的定期查詢操作。

為了檢查框架下各應(yīng)用站點(diǎn)的可連接性(可連接性指應(yīng)用服務(wù)器處于活動(dòng)狀態(tài),且在網(wǎng)絡(luò)上是可達(dá)的),Portal服務(wù)器會(huì)定期地自動(dòng)向各個(gè)應(yīng)用站點(diǎn)發(fā)HTTP請(qǐng)求。應(yīng)用站點(diǎn)收到Portal的請(qǐng)求后需要給予回應(yīng),以表明自己處于可連接狀態(tài)。

Portal認(rèn)證服務(wù)器向應(yīng)用站點(diǎn)發(fā)HTTP請(qǐng)求,格式為

url=http://appSiteURL?action=portalQuery

其中action=portalQuery表示本次HTTP請(qǐng)求是Portal站點(diǎn)發(fā)來的查詢請(qǐng)求。

應(yīng)用站點(diǎn)對(duì)該HTTP請(qǐng)求作出狀態(tài)答復(fù),格式為

url=http:// portalURL?state=alive

其中state=alive標(biāo)志應(yīng)用處于可連接狀態(tài)。

1.3結(jié)構(gòu)模塊

框架的主要功能模塊分為應(yīng)用入口模塊、認(rèn)證登錄模塊和注銷模塊三部分。其中應(yīng)用入口模塊置于系統(tǒng)框架下的各個(gè)Web應(yīng)用站點(diǎn),采用Filter技術(shù)處理Web請(qǐng)求,提供與Portal端的交互功能;認(rèn)證登錄模塊和注銷模塊統(tǒng)稱為服務(wù)器模塊,置于登錄服務(wù)器Portal上,分別負(fù)責(zé)為應(yīng)用站點(diǎn)提供認(rèn)證登錄服務(wù)和用戶注銷服務(wù)(圖2)。應(yīng)用入口模塊根據(jù)應(yīng)用站點(diǎn)的服務(wù)環(huán)境的不同,提供不同的接入實(shí)現(xiàn),如后文提到了SSOAuthenticator就是一個(gè)Resin環(huán)境下的接入模塊中的主要組成部分。與應(yīng)用入口模塊這種實(shí)現(xiàn)的多樣性相對(duì)的是服務(wù)器模塊也就是認(rèn)證登錄模塊和注銷模塊的唯一性。這種服務(wù)器模塊的統(tǒng)一性和應(yīng)用模塊的多樣性保證了框架的通用性,即實(shí)現(xiàn)了跨應(yīng)用環(huán)境平臺(tái)的統(tǒng)一登錄。

圖2基于Web請(qǐng)求代理的統(tǒng)一登錄框架

2Resin容器的融合設(shè)計(jì)與實(shí)現(xiàn)

2.1Resin容器的認(rèn)證授權(quán)機(jī)制分析

Resin容器自身擁有一套完整的認(rèn)證授權(quán)機(jī)制。該機(jī)制利用了Filter技術(shù),將所有訪問受限資源的請(qǐng)求截獲,對(duì)于其中未認(rèn)證的用戶將請(qǐng)求轉(zhuǎn)向指定的登錄頁面,由指定的Authenticator來處理用戶認(rèn)證;而對(duì)于認(rèn)證通過的用戶,容器將根據(jù)其用戶身份獲取對(duì)應(yīng)的角色信息,進(jìn)行訪問控制。

用戶在進(jìn)行應(yīng)用開發(fā)時(shí),僅僅需要對(duì)web.xml文件進(jìn)行簡單的配置操作,即可實(shí)現(xiàn)完整的認(rèn)證授權(quán)系統(tǒng)。配置文件樣本如下:

<loginconfig>

<authmethod>form</authmethod>

<formloginconfig formloginpage=′/login.jsp′

formerrorpage=′/error.jsp′/>

<authenticator id=′JDBCAuthenticator′>

<rolequery>

SELECT ROLE FROM USER WHERE USERID=?

</rolequery>

</authenticator>

</loginconfig>

<securityconstraint>

<webresourcecollection>

<urlpattern>/admin/*</urlpattern>

</webresourcecollection>

<authconstraint rolename=′admin′/>

</securityconstraint>

其中formloginpage指定登錄頁面,formerrorpage指定出錯(cuò)處理頁面,Authenticator指定處理認(rèn)證信息的類,Securityconstraint指定受限資源及其授權(quán)角色。

在Resin容器自身的這套認(rèn)證授權(quán)機(jī)制中也加入了對(duì)于統(tǒng)一登錄的考慮,但是僅僅局限在對(duì)同一個(gè)Resin容器下應(yīng)用的統(tǒng)一登錄,因此,需要重新改造才能將其完全接入已有的框架中。

通過分析Resin源代碼,可以發(fā)現(xiàn)Resin的認(rèn)證授權(quán)機(jī)制中的授權(quán)部分實(shí)際上是從屬于認(rèn)證部分的。而認(rèn)證部分的主要工作由Authenticator來完成,所以將Resin融入框架的關(guān)鍵就在于實(shí)現(xiàn)Resin開發(fā)包中的抽象類Authenticator的一個(gè)合適的子類。

2.2對(duì)Resin環(huán)境下的入口模塊設(shè)計(jì)

由于Resin認(rèn)證授權(quán)機(jī)制的基本思想與統(tǒng)一登錄框架下應(yīng)用入口模塊的設(shè)計(jì)思想基本吻合,均采用Filter技術(shù)來截獲請(qǐng)求,所以在Resin環(huán)境下應(yīng)用入口模塊的設(shè)計(jì)上可以省去Filter的實(shí)現(xiàn),只需考慮與服務(wù)器模塊的交互通信。通過對(duì)Resin機(jī)制的分析,首先考慮設(shè)計(jì)一個(gè) SSOAuthenticator繼承抽象類Authenticator。而不同于一般的Authenticator子類的是,它本身并不對(duì)用戶認(rèn)證信息進(jìn)行處理,而主要負(fù)責(zé)與Portal服務(wù)器的交互工作,由Portal服務(wù)器進(jìn)行統(tǒng)一的認(rèn)證;同時(shí)它還需要遵從Resin的機(jī)制,能夠根據(jù)該用戶的身份信息獲取對(duì)應(yīng)的角色信息完成訪問控制。

其次與服務(wù)器的交互方面,由專門的信息模塊負(fù)責(zé)交互信息的抽取和轉(zhuǎn)發(fā),模塊的設(shè)計(jì)遵從框架約定的通信協(xié)議;內(nèi)部模塊間的交互控制,由SSOAuthenticator負(fù)責(zé),同時(shí)負(fù)責(zé)實(shí)現(xiàn)Resin的認(rèn)證授權(quán)功能。具體實(shí)現(xiàn)按照J(rèn)2EE規(guī)范,復(fù)寫getUserPrincipal ̄Impl()方法,根據(jù)從服務(wù)器傳回的認(rèn)證用戶的身份信息構(gòu)造一個(gè)Principal對(duì)象,并復(fù)寫isUserInRole()方法以便獲取對(duì)應(yīng)的用戶角色。

2.3使用配置

完成應(yīng)用模塊設(shè)計(jì)后,將Resin下的應(yīng)用接入框架時(shí),用戶只需按照Resin規(guī)范對(duì)web.xml文件中的原有應(yīng)用配置進(jìn)行兩處修改(黑體部分),即將formloginpage修改為指定的RedirectServlet,將Authenticator指定為SSOAuthenticator即可。以2.1中的應(yīng)用樣本為例,修改后的配置文件如下:

<loginconfig>

<authmethod>form</authmethod>

<formloginconfig formloginpage=′/servlet/cn.csdb.sso.resinAuth.RedirectServlet′

formerrorpage=′/error.jsp′/>

<authenticator id=′cn.csdb.sso.resinAuth.SSOAuthenticator′>

…

</authenticator>

</loginconfig>

…

3結(jié)束語

統(tǒng)一登錄框架的主要意義在于實(shí)現(xiàn)多應(yīng)用環(huán)境的集成。良好的一致性、通用性和易用性是設(shè)計(jì)統(tǒng)一登錄框架時(shí)必須考慮的基本因素。本文以Resin環(huán)境為例,詮釋了框架在這三個(gè)方面的實(shí)現(xiàn)。實(shí)際上,以上三個(gè)方面僅滿足了統(tǒng)一登錄框架的基本要求,隨著統(tǒng)一登錄技術(shù)的普及,對(duì)于安全性方面的考慮將成為衡量框架設(shè)計(jì)優(yōu)劣的重要標(biāo)準(zhǔn)。如何在滿足一致性、通用性和易用性的基礎(chǔ)上,更好地保證系統(tǒng)的安全,將成為統(tǒng)一登錄框架今后發(fā)展的方向。

參考文獻(xiàn):

[1]The Open Group.X/Open Single SignOn Service (XSSO) Pluggable Authentication Modules[EB/OL].

http://www.opengroup.org/bookstore/catalog/u039.htm,199903.

[2]Brian Gilmore, et al. Core Middleware and Shared Services Studies Single SignOn Report[EB/OL]. http://www.jisc.ac.uk/index.cfm?name=prog_middss_studies,20-040922.

[3]Garman, Jason. Single Signon for Your Web Applications with Apache and Kerberos[EB/OL].

http://www.onlamp.com/pub/a/onlamp/2003/09/11/kerberos.html,20030911.

[4]Chris Dunne. Technical Director, Big Picture Software. Build and Implement a Single SignOn Solution[EB/OL].http://www106.ibm.com/developerworks/ web/library/wasinglesign/,20030930.

[5]Shannon B. Java2 Platform Enterprise Edition Specification v1.4[Z]. Sun Microsystems Inc.

[6]Johannes Fiala. Sharing Session Data between Contexts HOWTO[EB/OL].http://archives.realtime.com/pipermail/tomcatusers/2003May/112539.html,200305.

[7]John Bell, Tony Loton. Java Servlets 2.3編程指南(Professional Java Servlets 2.3)[M]. 北京:電子工業(yè)出版社, 2002.

[8]Authentication with Resin Authorization with Resin[EB/OL]. http://www.caucho.com/resin3.0/security/index.xtp.

作者簡介:

續(xù)巖(1981),男,碩士研究生,主要研究方向?yàn)榇笠?guī)模科學(xué)數(shù)據(jù)共享技術(shù);

閻保平(1950),女,研究員,博導(dǎo),博士,主要研究方向?yàn)榇笠?guī)模科學(xué)數(shù)據(jù)共享技術(shù)、數(shù)據(jù)網(wǎng)格技術(shù)與應(yīng)用等;

季永志(1980),男,碩士研究生,主要研究方向?yàn)榇笠?guī)模科學(xué)數(shù)據(jù)共享技術(shù);

吳開超(1971),男,高級(jí)工程師,主要研究方向?yàn)榇笠?guī)模科學(xué)數(shù)據(jù)共享技術(shù)。

注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文

主站蜘蛛池模板: 亚洲va欧美va国产综合下载| 亚洲国产精品一区二区第一页免 | 欧美日韩国产在线观看一区二区三区| 色综合久久久久8天国| 日韩欧美国产综合| 无码一区18禁| 色天天综合久久久久综合片| 亚洲人成人无码www| 国产成人综合日韩精品无码不卡| 精品国产自在现线看久久| 97久久人人超碰国产精品| 国产亚洲欧美在线专区| 97国产精品视频人人做人人爱| 欧美一级在线| 国产成人一区二区| 1769国产精品视频免费观看| 色欲综合久久中文字幕网| 国产一区二区三区免费观看| 色婷婷综合在线| 亚洲天堂精品视频| 2021国产精品自拍| 亚洲欧美成人网| 99热这里只有精品在线观看| 99视频在线精品免费观看6| 99精品免费在线| 国产美女精品在线| 99视频在线免费| 亚洲动漫h| 国产第一页屁屁影院| 国产中文一区二区苍井空| 91精品人妻互换| 久久婷婷五月综合色一区二区| 亚洲综合网在线观看| 9啪在线视频| 成人午夜网址| 99视频精品在线观看| 亚洲水蜜桃久久综合网站| 午夜色综合| 激情無極限的亚洲一区免费| 欧洲在线免费视频| а∨天堂一区中文字幕| 精品亚洲欧美中文字幕在线看 | 国产白丝av| a在线亚洲男人的天堂试看| 狠狠五月天中文字幕| 在线高清亚洲精品二区| 国产a v无码专区亚洲av| 看你懂的巨臀中文字幕一区二区| 国产精品久久久久无码网站| 午夜国产大片免费观看| 热99精品视频| 免费人成网站在线高清| 最新国产高清在线| 国产一区二区视频在线| 精品福利国产| 亚洲狠狠婷婷综合久久久久| 人人91人人澡人人妻人人爽| 欧美亚洲一区二区三区导航| 九九视频免费看| www.日韩三级| 人与鲁专区| 亚洲成a人片77777在线播放| 东京热av无码电影一区二区| 中文字幕永久在线看| 久久黄色小视频| 免费在线a视频| 无码AV日韩一二三区| 99国产在线视频| 欧美日韩在线亚洲国产人| 国产午夜精品一区二区三| 国产91高清视频| 亚洲一区二区成人| 国产精品2| 国产激情影院| 少妇高潮惨叫久久久久久| 日本在线欧美在线| 极品国产一区二区三区| 熟女视频91| 最新国产网站| 国产av无码日韩av无码网站| 精品一区国产精品| 日韩成人在线视频|