0 引言
企業(yè)在建立信息化設(shè)計(jì)之初未曾考慮各個(gè)子系統(tǒng)之間的通信問題,隨著時(shí)間的推移,企業(yè)所建立的信息系統(tǒng)越來越多,一個(gè)需要在多個(gè)應(yīng)用系統(tǒng)之間綜合操作的用戶就必須設(shè)置大量的賬號(hào)和密碼,極易造成混淆。同時(shí),頻繁的登錄操作還容易造成信息的泄露,這也將帶來嚴(yán)重的安全隱患。對(duì)于管理者而言,需要維護(hù)多個(gè)用戶數(shù)據(jù)庫,管理繁瑣。
為了解決上述問題,引入了企業(yè)信息門戶(EIP,EntERPrise Information Portal)的概念。企業(yè)信息門戶涉及用戶界面集成、數(shù)據(jù)集成、業(yè)務(wù)流程管理以及單點(diǎn)登錄系統(tǒng)等多個(gè)方面,其中首先需要解決的就是單點(diǎn)登錄系統(tǒng)(SSO,Single Sign On)的實(shí)現(xiàn)。作為用戶而言,只需進(jìn)行一次主動(dòng)的身份認(rèn)證,隨后就能方便地訪問所有被授權(quán)的數(shù)據(jù)資源而無需再次認(rèn)證。作為管理者而言,只需維護(hù)少數(shù)幾個(gè)信息數(shù)據(jù)庫,從而提高了系統(tǒng)的可維護(hù)性和整體安全性。
現(xiàn)有的SSO解決方案有微軟的Passport、IBM的WebSphere Portal Server以及Liberty等。這些方案雖然都能夠?qū)崿F(xiàn)單點(diǎn)登錄功能,但各系統(tǒng)分別有著不同的側(cè)重點(diǎn)而且對(duì)系統(tǒng)架構(gòu)有著嚴(yán)格要求。根據(jù)上述分析,本文提出一種更具靈活性和安全性的單點(diǎn)登錄解決方案,能夠根據(jù)Web服務(wù)應(yīng)用耦合程度不同進(jìn)行安全域劃分,用戶在某一域內(nèi)跨站點(diǎn)訪問數(shù)據(jù)時(shí),采用Web應(yīng)用間傳遞票據(jù)的方式進(jìn)行認(rèn)證;而用戶如需要跨域進(jìn)行訪問數(shù)據(jù)時(shí),則需要通過更嚴(yán)格的加密Cookie共享機(jī)制進(jìn)行認(rèn)證。這種動(dòng)態(tài)認(rèn)證策略既緩解了認(rèn)證過程的復(fù)雜性,又保證了系統(tǒng)的整體安全性。
1 基于安全域的單點(diǎn)登錄模型概述
1.1 安全域相關(guān)概念
安全和信任已成為Web服務(wù)的重要需求之一,針對(duì)這一問題,本文提出一種新的安全域概念。一個(gè)安全域中的Web應(yīng)用必須是相互關(guān)聯(lián)且相互信任的,在邏輯和管理意義上處于同一域,并且在同一個(gè)安全域內(nèi)實(shí)施相同的本地安全策略。
目前,安全域的劃分方式主要包括按業(yè)務(wù)劃分和按安全級(jí)別劃分。企業(yè)信息門戶系統(tǒng)的用戶經(jīng)常要求在多個(gè)相關(guān)的業(yè)務(wù)系統(tǒng)之間請(qǐng)求數(shù)據(jù),最理想的辦法是將現(xiàn)有系統(tǒng)按業(yè)務(wù)劃分安全域,每個(gè)安全域承擔(dān)相關(guān)的一類信息服務(wù)。這種劃分方法對(duì)系統(tǒng)改動(dòng)最小,劃分形式最簡單,最容易實(shí)施,同時(shí)又保證了域內(nèi)訪問的高效性以及跨域訪問的安全性。
1.2 基于安全域的單點(diǎn)登錄模型
現(xiàn)有的單點(diǎn)登錄系統(tǒng)無論在靈活性還是安全性上都無法同時(shí)滿足企業(yè)信息門戶系統(tǒng)的現(xiàn)實(shí)要求,針對(duì)此問題在上述技術(shù)分析的基礎(chǔ)上提出一種基于安全域的單點(diǎn)登錄模型。根據(jù)請(qǐng)求訪問同一域內(nèi)的業(yè)務(wù)和請(qǐng)求跨域訪問分別提出了兩種不同級(jí)別的認(rèn)證機(jī)制,模型結(jié)構(gòu)如圖1所示。
圖1 基于安全域的單點(diǎn)登錄模型整體架構(gòu)
由圖1可知,基于安全域的單點(diǎn)登錄模型主要包括企業(yè)信息門戶,認(rèn)證中心以及劃分了安全域的眾多業(yè)務(wù)系統(tǒng)。安全域是依據(jù)業(yè)務(wù)系統(tǒng)的服務(wù)類型劃分的,而與各個(gè)業(yè)務(wù)系統(tǒng)的實(shí)際地理位置沒有關(guān)系,圖中將同域的各業(yè)務(wù)系統(tǒng)放置在一起只是邏輯意義上的,真正區(qū)別業(yè)務(wù)系統(tǒng)所屬哪個(gè)安全域則是依據(jù)業(yè)務(wù)信息表中標(biāo)注的安全域ID。
2 基于安全域的單點(diǎn)登錄系統(tǒng)設(shè)計(jì)
根據(jù)上述提出的模型,給出單點(diǎn)登錄系統(tǒng)各模塊的設(shè)計(jì)細(xì)節(jié),主要包括企業(yè)信息門戶和認(rèn)證中心兩大模塊;诎踩虻膯吸c(diǎn)登錄分為單域登錄、域內(nèi)跨站點(diǎn)訪問和跨域訪問,分別給出其流程細(xì)節(jié)。
2.1 系統(tǒng)各模塊的設(shè)計(jì)細(xì)節(jié)
2.1.1 企業(yè)信息門戶
企業(yè)信息門戶對(duì)所有用戶提供統(tǒng)一的單點(diǎn)登錄入口和登錄驗(yàn)證,并提供所有業(yè)務(wù)系統(tǒng)的鏈接。用戶首次訪問業(yè)務(wù)數(shù)據(jù)時(shí)會(huì)被要求向認(rèn)證中心提供用戶名和口令進(jìn)行驗(yàn)證。其中,用戶名被映射為一個(gè)能被所用應(yīng)用系統(tǒng)識(shí)別的ID號(hào),如果通過驗(yàn)證,就會(huì)返回用戶請(qǐng)求的業(yè)務(wù)數(shù)據(jù),而內(nèi)部的驗(yàn)證過程對(duì)用戶是透明的。
2.1.2 認(rèn)證中心
認(rèn)證中心是整個(gè)系統(tǒng)的中心,具體由LDAP服務(wù)器,Cookie服務(wù)器和認(rèn)證中心服務(wù)器組成。主要用于向用戶提供注冊(cè)服務(wù),向所有業(yè)務(wù)系統(tǒng)提供認(rèn)證服務(wù),同時(shí)向用戶提供統(tǒng)一的調(diào)用接口。對(duì)各服務(wù)器重要功能分析如下。
。1)LDAP服務(wù)器
LDAP全稱為Lightweight Directory Access Protocol,是一個(gè)輕量級(jí)目錄訪問協(xié)議。該協(xié)議是基于X.500標(biāo)準(zhǔn)的,與X.500不同的是LDAP支持TCP/IP,這對(duì)訪問Internet來說是必須的。LDAP實(shí)際上是一種特殊的數(shù)據(jù)庫,與一般數(shù)據(jù)庫不同,LDAP對(duì)查詢進(jìn)行了優(yōu)化,特別適用于查詢和更新操作密集型的服務(wù)。正因?yàn)槿绱,LDAP用于單點(diǎn)登錄系統(tǒng)中用戶信息的存儲(chǔ)效率極高。認(rèn)證中心每次得到認(rèn)證請(qǐng)求后都要訪問LDAP服務(wù)器中的用戶信息表,具體如表1所示,根據(jù)用戶當(dāng)前信息判斷用戶的權(quán)限,從而決定是否對(duì)用戶的請(qǐng)求授權(quán)。對(duì)于用戶的每次訪問,認(rèn)證中心還要及時(shí)更新用戶信息表中的動(dòng)態(tài)表項(xiàng),為下次認(rèn)證提供依據(jù)。
表1 SSO-USER信息表
單點(diǎn)登錄用戶信息表記錄了USER_LEVEL,根據(jù)用戶的級(jí)別來裁定用戶是否有訪問某個(gè)業(yè)務(wù)系統(tǒng)的權(quán)限。用戶的LOGIN_TIME用于記錄用戶首次登入系統(tǒng)的時(shí)間,根據(jù)當(dāng)前時(shí)間和LOGIN_TIME進(jìn)行運(yùn)算得出的時(shí)差來判斷用戶是否仍在權(quán)限有效期內(nèi)。而LOGOUT_TIME用于記錄用戶登出的時(shí)間,如果LOGOUT_TIME早于LOGIN_TIME則可以判定用戶仍處于登入狀態(tài);反之用戶已經(jīng)登出系統(tǒng),如需訪問業(yè)務(wù)系統(tǒng)必須重新登錄。TOKEN_ID是用戶成功登錄后系統(tǒng)分配的隨機(jī)登錄票據(jù),是用于記錄用戶狀態(tài)的唯一標(biāo)識(shí)和憑證。TOKEN_ID會(huì)被存入認(rèn)證中心的Cookie中,即使用戶進(jìn)行跨域訪問業(yè)務(wù)數(shù)據(jù),也有一種統(tǒng)一的辦法獲得此票據(jù)。LAST_SERVICE記錄了用戶訪問的最后一個(gè)服務(wù),當(dāng)用戶再次訪問其他服務(wù)時(shí)此字段會(huì)被驗(yàn)證,用戶每次注銷后,LAST_SERVICE的值都會(huì)被清空。LAST_SERVICE將被作為外鍵和用戶當(dāng)前要訪問的安全域業(yè)務(wù)表相關(guān)聯(lián),安全域業(yè)務(wù)信息表如表2所示。如果用戶這次要訪問的服務(wù)與上次訪問的服務(wù)處于同一安全域,則會(huì)通過驗(yàn)證和授權(quán)。如果當(dāng)前安全域的業(yè)務(wù)表中不包含上次訪問的服務(wù),則會(huì)通過查證Cookie服務(wù)器中的相應(yīng)Cookie來進(jìn)行更嚴(yán)格的驗(yàn)證。
表2 安全域業(yè)務(wù)信息表
安全域業(yè)務(wù)信息表中,SERVICE_ID用于唯一標(biāo)明業(yè)務(wù)服務(wù),DOMAIN_ID用于區(qū)分此項(xiàng)業(yè)務(wù)服務(wù)屬于哪個(gè)安全域。ACCESS_LEVEL規(guī)定了此信息服務(wù)的訪問權(quán)限,對(duì)應(yīng)于SSO_USER表中的USER_LEVEL,只有用戶級(jí)別高于或等于本業(yè)務(wù)服務(wù)的ACCESS_LEVEL才能有權(quán)限訪問。
。2)Cookie服務(wù)器
Cookie服務(wù)器用于生成和更新用戶訪問業(yè)務(wù)信息系統(tǒng)所產(chǎn)生的Cookie。Cookie通常是伴隨著用戶請(qǐng)求和頁面響應(yīng)在服務(wù)器和瀏覽器之間傳遞。在采用Cookie來保存用戶瀏覽信息時(shí),所有的信息都是存儲(chǔ)在客戶方,并且是以明文方式存放。這對(duì)于安全性要求很高的單點(diǎn)登錄系統(tǒng)來說存在著嚴(yán)重的安全隱患,不能直接將普通的Cookie應(yīng)用于系統(tǒng)設(shè)計(jì)。
基于安全域的單點(diǎn)登錄系統(tǒng)提出了一種能夠提供跨域訪問的加密Cookie解決方案。Cookie服務(wù)器中為每個(gè)安全域設(shè)置一個(gè)域Cookie文件,具體記錄了所有用戶對(duì)本安全域內(nèi)業(yè)務(wù)信息系統(tǒng)的訪問信息。其中應(yīng)包含Cookie ID編號(hào),作為Cookie文件檢索的標(biāo)識(shí);安全域編號(hào)Domain ID,用以表示屬于哪個(gè)安全域;所有用戶的訪問信息,包括對(duì)應(yīng)用戶的IP、所訪問的業(yè)務(wù)信息系統(tǒng);還應(yīng)包含Cookie的生成時(shí)間和有效期限。
由于域Cookie用于保證用戶能夠獲得跨安全域訪問的授權(quán),各安全域?qū)ο鄳?yīng)Cookie的加密方式各不相同,都有自己的一對(duì)公開加密密鑰和保密解密密鑰。Cookie服務(wù)器在向客戶瀏覽器發(fā)布摘要Cookie之前會(huì)使用產(chǎn)生此Cookie文件的安全域的加密密鑰對(duì)其進(jìn)行加密。而用戶下次訪問業(yè)務(wù)信息系統(tǒng)時(shí)會(huì)提供自己的Cookie文件,如果此安全域正是產(chǎn)生用戶提供的Cookie的安全域,則業(yè)務(wù)系統(tǒng)能使用自己的解密密鑰對(duì)其解密并獲得其中的認(rèn)證票據(jù)信息,否則無法對(duì)其解密。
(3)認(rèn)證中心服務(wù)器
認(rèn)證中心服務(wù)器能夠接收來自各個(gè)安全域的認(rèn)證請(qǐng)求,管理著用戶的全局信息數(shù)據(jù)庫,負(fù)責(zé)用戶的登錄,認(rèn)證,授權(quán)和登出等操作。認(rèn)證中心服務(wù)需要訪問存放于LDAP服務(wù)器中用戶表,以完成用戶的登錄驗(yàn)證。當(dāng)某安全域向認(rèn)證中心提出認(rèn)證請(qǐng)求時(shí),認(rèn)證服務(wù)器會(huì)首先查看用戶信息表,驗(yàn)證用戶是否已登錄,是否有訪問此業(yè)務(wù)服務(wù)的權(quán)限,以及是否訪問過同域的業(yè)務(wù)服務(wù)。當(dāng)認(rèn)證中心認(rèn)定用戶是以跨域的形式訪問時(shí),會(huì)向Cookie服務(wù)器提出驗(yàn)證請(qǐng)求,查找用戶的訪問記錄。每次訪問后,認(rèn)證中心還要更新LDAP服務(wù)器和Cookie服務(wù)器中相應(yīng)的數(shù)據(jù)。
2.2 基于安全域的單點(diǎn)登錄流程
2.2.1 單域登錄流程
用戶在首次登陸系統(tǒng)時(shí)訪問業(yè)務(wù)服務(wù)系統(tǒng)A1,其登錄流程如圖2所示。對(duì)其流程的詳細(xì)描述如下。
圖2 單域登錄流程
。1)用戶首次訪問安全域A中的業(yè)務(wù)服務(wù)系統(tǒng)A1,請(qǐng)求相應(yīng)的數(shù)據(jù)。
(2)業(yè)務(wù)服務(wù)系統(tǒng)A1并不馬上對(duì)用戶提供的Cookie進(jìn)行解密(有可能用戶根本就沒有業(yè)務(wù)服務(wù)系統(tǒng)A1的Cookie),而是向認(rèn)證中心提起認(rèn)證請(qǐng)求。
。3)認(rèn)證中心通過查看LDAP服務(wù)器中此用戶的信息表得知用戶尚未登錄系統(tǒng),因此將告知門戶系統(tǒng)未通過認(rèn)證。
。4)門戶系統(tǒng)將登錄頁面返回給用戶,要求用戶提供用戶名和密碼等登錄信息。
。5)用戶將輸入的用戶信息提交給認(rèn)證中心,認(rèn)證中心通過對(duì)比LDAP服務(wù)器中的用戶信息得知用戶是合法的。然后會(huì)更新用戶信息表中的LOGIN_TIME為當(dāng)前時(shí)間,并分配給用戶一個(gè)隨機(jī)TOKEN_ID。
。6)最終,認(rèn)證中心將認(rèn)證結(jié)果與包含使用安全域A的公開密鑰加密過的票據(jù)一同提供給業(yè)務(wù)服務(wù)系統(tǒng)A1。A1收到驗(yàn)證結(jié)果后會(huì)使用安全域A的解密密鑰將票據(jù)解密,從中讀取驗(yàn)證結(jié)果。
。7)A1通過驗(yàn)證票據(jù)信息合法,決定向用戶提供所請(qǐng)求的數(shù)據(jù)。與數(shù)據(jù)一同傳遞給用戶的還包括這次數(shù)據(jù)訪問經(jīng)過安全域A的加密密鑰加密的Cookie文件。
。8)同時(shí),A1還會(huì)更新認(rèn)證中心的相關(guān)數(shù)據(jù),這包括將LDAP服務(wù)器中最近訪問數(shù)據(jù)的用戶信息表中的LAST_SERVICE改為A1,同時(shí)將此次用戶訪問信息添加到Cookie服務(wù)器內(nèi)安全域A的Cookie文件中,具體的內(nèi)容應(yīng)和傳遞給用戶的Cookie文件完全一致。
圖2所示的首次訪問流程過后,認(rèn)證中心有了此用戶的一次訪問記錄,而用戶瀏覽器也有了一份加密的Cookie文件,其中包含了認(rèn)證票據(jù)和當(dāng)次訪問的記錄。這些信息都給用戶再次訪問安全域A中的其他服務(wù)提供了參考依據(jù)。
2.2.2 域內(nèi)跨站點(diǎn)訪問流程
假定剛訪問過安全域A中業(yè)務(wù)服務(wù)系統(tǒng)A1的用戶又要訪問同一安全域中的業(yè)務(wù)服務(wù)系統(tǒng)A2,此次訪問屬于域內(nèi)跨站點(diǎn)訪問,具體流程如圖3所示。對(duì)其分析闡述如下。
圖3 域內(nèi)跨站點(diǎn)訪問流程
(1)用戶請(qǐng)求訪問安全域A中的業(yè)務(wù)服務(wù)系統(tǒng)A2,并向其提供訪問過A1的Cookie文件。
。2)業(yè)務(wù)服務(wù)系統(tǒng)A2并不立即試圖對(duì)其解密,而是請(qǐng)求認(rèn)證中心認(rèn)證用戶的權(quán)限。
。3)認(rèn)證中心通過查詢用戶信息表中的USER_LEVEL字段的值得知用戶有權(quán)限訪問A2,并且上次訪問過的服務(wù)為同域的A1,此時(shí)認(rèn)證中心不必查看安全域A的Cookie文件,直接將授權(quán)用戶訪問的認(rèn)證結(jié)果返回給A2。
。4)A2收到認(rèn)證中心的認(rèn)證結(jié)果后仍會(huì)對(duì)用戶提供的Cookie文件進(jìn)行解密,從中獲取票據(jù),驗(yàn)證后向用戶傳遞所訪問的數(shù)據(jù),同時(shí)傳遞此次訪問服務(wù)的加密Cookie文件。
(5)此后,A2還要向認(rèn)證中心提交此次用戶的訪問信息,供認(rèn)證中心更新數(shù)據(jù)。其中包括將用戶的LAST_SERVICE改為A2,將傳遞給用戶的Cookie文件內(nèi)容更新到安全域A的Cookie文件中。
經(jīng)過此次訪問,認(rèn)證中心仍然只有用戶對(duì)安全域A的訪問記錄,而用戶的瀏覽器Cookie中也只有兩次訪問安全域A中業(yè)務(wù)服務(wù)的記錄。由于不同安全域采用的安全策略的不同,這些信息都不能作為用戶訪問其他安全域的依據(jù)。
2.2.3 跨域訪問流程
用戶已經(jīng)成功登錄SSO系統(tǒng),并且成功訪問了安全域A中的兩個(gè)業(yè)務(wù)服務(wù)系統(tǒng)A1和A2。現(xiàn)該用戶需要訪問安全域B中的業(yè)務(wù)服務(wù)系統(tǒng)B1,這屬于跨域訪問,具體流程如圖4所示。與域內(nèi)跨站點(diǎn)訪問相比,跨域訪問的流程大體相似,只有某些步驟的實(shí)際實(shí)現(xiàn)方式的不同,并沒有過于復(fù)雜的過程,也不涉及其他域,同時(shí)能夠保證系統(tǒng)的安全性。
圖4 跨域訪問流程
由圖4可知,跨域訪問流程敘述如下。
(1)用戶請(qǐng)求訪問業(yè)務(wù)服務(wù)系統(tǒng)B1,并向其提供Cookie文件(只能獲取Cookie ID)。
。2)業(yè)務(wù)服務(wù)系統(tǒng)B1向認(rèn)證中心提起認(rèn)證請(qǐng)求,并將用戶提供的Cookie ID傳遞給認(rèn)證中心。
。3)認(rèn)證中心首先查看LDAP服務(wù)器中該用戶的信息表,得知用戶已經(jīng)登錄系統(tǒng),用戶級(jí)別高于B1的訪問級(jí)別。然后認(rèn)證中心會(huì)通過用戶提供的Cookie ID檢索Cookie服務(wù)器中用戶的訪問記錄,并將其通過安全域B的公開加密密鑰而加密為一個(gè)摘要Cookie文件,其中包含有此次認(rèn)證的票據(jù)和權(quán)限認(rèn)證結(jié)果。最終,將生成的Cookie文件傳遞給業(yè)務(wù)服務(wù)系統(tǒng)B1。
。4)業(yè)務(wù)服務(wù)系統(tǒng)B1用自身的保密解密密鑰對(duì)收到的Cookie文件進(jìn)行解密,從中得知認(rèn)證成功。然后,會(huì)將用戶請(qǐng)求的數(shù)據(jù)和包含本次訪問記錄的加密過的Cookie文件一同返回給用戶。
。5)之后,業(yè)務(wù)服務(wù)系統(tǒng)B1還會(huì)向認(rèn)證中心提交此次用戶訪問的記錄。認(rèn)證中心會(huì)依此將用戶的LAST_SERVICE改為B1,并將傳遞給用戶的Cookie文件更新到Cookie服務(wù)器內(nèi)的安全域B的Cookie文件中。
依照上述流程,使用和域內(nèi)訪問相似的步驟就實(shí)現(xiàn)了跨域訪問,與其他跨域訪問的實(shí)現(xiàn)方案相比,認(rèn)證快捷高效。同時(shí),通過LDAP服務(wù)器和Cookie服務(wù)器進(jìn)一步保證了認(rèn)證過程的安全性。
3 關(guān)鍵技術(shù)與性能評(píng)價(jià)
3.1 用戶權(quán)限管理和認(rèn)證技術(shù)
用戶對(duì)任何業(yè)務(wù)服務(wù)系統(tǒng)的訪問都需要獲得認(rèn)證中心的認(rèn)證,否則沒有權(quán)限獲取所需數(shù)據(jù)。同一用戶在不同業(yè)務(wù)服務(wù)系統(tǒng)中的權(quán)限是不同的,更不能任意進(jìn)行跨域訪問。所有這些權(quán)限的管理問題都是通過LDAP服務(wù)器中的用戶信息和Cookie服務(wù)器中的Cookie文件進(jìn)行管理的。
系統(tǒng)中使用Web Service技術(shù)對(duì)認(rèn)證服務(wù)進(jìn)行封裝。Web Service是一個(gè)獨(dú)立的,基于標(biāo)準(zhǔn)的分布式組件技術(shù)。這是基于Internet標(biāo)準(zhǔn)和XML技術(shù)來實(shí)現(xiàn)的。Web Service能在客戶端和業(yè)務(wù)服務(wù)系統(tǒng)之間實(shí)現(xiàn)一種松耦合關(guān)系,通過XML/SOAP實(shí)現(xiàn)消息交換;WSDL對(duì)服務(wù)進(jìn)行描述;UDDI對(duì)服務(wù)進(jìn)行注冊(cè)。
根據(jù)系統(tǒng)需要,使用SOAP借助UDDI注冊(cè)中心提供的接口發(fā)出服務(wù)請(qǐng)求。UDDI注冊(cè)中心為Web Service創(chuàng)建服務(wù)描述文件WSDL和獲得服務(wù)入口地址,并返回給系統(tǒng)。描述文件包含對(duì)消息的數(shù)據(jù)結(jié)構(gòu),端口類型,通信協(xié)議的具體描述。
3.2 安全性能評(píng)價(jià)
本文將安全域的概念用于設(shè)計(jì)企業(yè)信息門戶的單點(diǎn)登錄系統(tǒng),與其他框架下的系統(tǒng)設(shè)計(jì)相比具有以下性能優(yōu)勢:
。1)認(rèn)證過程中使用的票據(jù)(Token)是由用戶信息和票據(jù)產(chǎn)生時(shí)間經(jīng)過連接后生成的,由于用戶的請(qǐng)求行為是隨機(jī)的,票據(jù)的真正內(nèi)容實(shí)際上也是隨機(jī)產(chǎn)生的,這防止了票據(jù)的偽造和破解。不僅如此,票據(jù)產(chǎn)生后還會(huì)采用公開的加密算法進(jìn)行加密,只有對(duì)應(yīng)安全域的保密密鑰才能對(duì)其進(jìn)行解密,從而保證了票據(jù)傳輸過程中的安全性。
。2)由于跨域訪問時(shí)用戶提供的Cookie無法被當(dāng)前域解密,因此必須請(qǐng)求認(rèn)證中心在驗(yàn)證用戶身份后返回一個(gè)能被當(dāng)前域解密的Cookie文件,這是在Cookie服務(wù)器中的安全域Cookie文件的幫助下實(shí)現(xiàn)的。
。3)認(rèn)證過程中安全信息的交換頻繁進(jìn)行,保證信息傳輸?shù)臋C(jī)密性和完整性對(duì)于單點(diǎn)登錄系統(tǒng)則至關(guān)重要。認(rèn)證中心和各安全域之間的信息交換是基于SOAP協(xié)議的,這是一種基于XML的數(shù)據(jù)格式,能夠由WS-Security規(guī)范來保證,滿足系統(tǒng)端到端的安全級(jí)別要求。SOAP中使用的是基于XML Encryption的加密技術(shù),能對(duì)消息的部分或全部內(nèi)容進(jìn)行加密。加密后的XML文檔可傳遞到相應(yīng)的安全域,對(duì)應(yīng)安全域只能解密與此相關(guān)的文件內(nèi)容,而其他安全域的信息仍是保密的。
4 結(jié)束語
本文介紹了一種企業(yè)信息門戶的單點(diǎn)登錄系統(tǒng)的實(shí)現(xiàn),系統(tǒng)實(shí)現(xiàn)了基于安全域的單點(diǎn)登錄和跨域訪問。解決了SSO系統(tǒng)不能實(shí)現(xiàn)Cookie跨域共享的問題。通過采用LDAP服務(wù)器和Cookie服務(wù)器保存用戶的信息和訪問記錄,對(duì)用戶的域內(nèi)訪問和跨域訪問采用不同的認(rèn)證機(jī)制,既保證了系統(tǒng)的安全性,又實(shí)現(xiàn)了認(rèn)證過程的高效性。
轉(zhuǎn)載請(qǐng)注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:一種基于安全域的企業(yè)信息門戶單點(diǎn)登錄系統(tǒng)的設(shè)計(jì)
本文網(wǎng)址:http://www.ezxoed.cn/html/consultation/10839414453.html