国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Cookie的單點登錄認證機制實現(xiàn)

2014-08-08 06:25:28
關(guān)鍵詞:表單單點解密

王 小 紅

(福建經(jīng)濟學(xué)校 計算機教研室,福州 350002 )

通常企業(yè)內(nèi)員工需要使用企業(yè)內(nèi)的多個業(yè)務(wù)系統(tǒng),要想進入各個業(yè)務(wù)系統(tǒng),就需要員工分別輸入系統(tǒng)的用戶名和密碼,對企業(yè)員工來說使用很不方便,同時還要記憶多個賬戶信息,大大降低了工作效率.并且很多人為了方便記憶,通常將系統(tǒng)賬戶設(shè)置成相同的用戶名和密碼,這樣又容易造成企業(yè)信息外泄,系統(tǒng)的安全受到威脅.原先的用戶登錄方式已經(jīng)不能滿足企業(yè)目前及未來業(yè)務(wù)發(fā)展的需求.為了解決以上企業(yè)業(yè)務(wù)系統(tǒng)的整合問題,提出了單點登錄(Single Sign-on,簡稱SSO)技術(shù)的解決方案.SSO的含義是:在企業(yè)內(nèi)的多個應(yīng)用系統(tǒng)中,用戶實現(xiàn)“一次登錄,全網(wǎng)通行”,而無需進行多次登錄.單點登錄的認證數(shù)據(jù)可以來源于企業(yè)門戶系統(tǒng),而門戶系統(tǒng)中的用戶屬性信息在身份認證完成后,通過單點登錄系統(tǒng)傳遞給后臺的應(yīng)用系統(tǒng),作為業(yè)務(wù)系統(tǒng)進一步進行訪問控制管理的基礎(chǔ).

1 單點登錄技術(shù)方案

實現(xiàn)SSO的技術(shù)有很多,有基于代理人、基于經(jīng)紀人、基于網(wǎng)關(guān)和Cookie等,針對不同架構(gòu)系統(tǒng)使用不同的認證方式.現(xiàn)介紹幾個常用方式:

(1) LTPA.LTPA(Lightweight Third-Party Authentication,中文全稱是輕量級第三方認證)是適用于IBM WebSphere和Domino產(chǎn)品的SSO應(yīng)用,可以通過配置實現(xiàn)用戶的單點登陸功能.當用戶請求獲取WebSphere資源時,必須首先通過認證服務(wù),待用戶驗證通過后生成LTPA Cookie(即LTPA Token);用戶在發(fā)送包含LTPA Cookie的HTTP請求時,后臺的WebSphere服務(wù)器通過連接收到請求,同時使用其共享的加密密鑰副本解密cookie并驗證Cookie的完整性,這時通過Cookie中提供的有效標識信息來識別登錄用戶的合法身份.LTPA技術(shù)是IBM的標準,它支持IBM產(chǎn)品之間的身份驗證(圖1).

(2) Form-Based方式.基于表單的單點登陸方式,這種方式是通過模擬用戶憑證提交,將業(yè)務(wù)系統(tǒng)相關(guān)的用戶憑證通過 Form 提交的方式,傳遞給業(yè)務(wù)系統(tǒng)認證模塊.認證服務(wù)通過webseal新建的賬號信息,透明地登陸到支持表單認證的子系統(tǒng)中,并顯示子系統(tǒng)的原始用戶名.具體的認證時序圖如圖2所示.

圖1 LTPA單點登錄流程

圖2 基于表單的單點登錄時序圖

(3) Cookie-based方式.在Web領(lǐng)域較常使用Cookie認證機制,并適用于SUN Portal或Oracle Portal的SSO應(yīng)用.在相同域名間通過Cookie和令牌傳遞,實現(xiàn)登錄訪問(圖3);令牌環(huán)方式的最大好處在于無需統(tǒng)一的驗證服務(wù)器,是“多點驗證模式”的主力實現(xiàn)技術(shù)[1],各個服務(wù)器都通過統(tǒng)一的密鑰對令牌進行加密解密,所以該方式具有安全性高,穩(wěn)定性好,性能消耗低等優(yōu)點;其缺點就是必須保證各臺應(yīng)用服務(wù)器同域.對于跨域的登錄,Cookies自己并沒有這個能力,但可以結(jié)合其他形式實現(xiàn)跨域的SSO.

圖3 基于Cookie單點登錄流程

(4) SSO方案比較.以上3種實現(xiàn)單點登陸的方式所能夠支持的應(yīng)用系統(tǒng)、優(yōu)缺點以及建議如表1所示:

表1 單點登錄方案對比表

可見,目前大多數(shù)企業(yè)內(nèi)匯集眾多基于Web的應(yīng)用系統(tǒng),各個應(yīng)用系統(tǒng)都有自己獨立的門戶網(wǎng)站和異構(gòu)平臺,可考慮利用Cookie在不同站點的傳遞機制.它是一種基于HTTP重定向和票據(jù)的集中式認證方式;結(jié)合了企業(yè)要求具有的方便靈活、低成本、跨地區(qū)(域)的特質(zhì).通常考慮采用基于Cookie的單點登錄認證機制.

2 Cookie機制的實現(xiàn)方案

2.1 Cookie認證方式

研究分析用戶單點登錄采用基于Cookie的認證方式,所有參與單點登錄應(yīng)用系統(tǒng)的訪問地址要求采用域名,并且要隸屬于同一個DNS域.若無法統(tǒng)一域名,也可以實現(xiàn)單點登錄(見下面“跨域解決”).所有應(yīng)用系統(tǒng)的登錄認證都通過統(tǒng)一認證中心(一般企業(yè)是門戶系統(tǒng)來擔當)來實現(xiàn).各應(yīng)用系統(tǒng)需要簡單改造一下本系統(tǒng)的登錄頁面,把本系統(tǒng)登錄頁面中輸入用戶名和密碼的提交地址(即Form的Action)變更為統(tǒng)一認證中心的登錄認證地址或者直接把本系統(tǒng)的登錄頁面重定向到認證中心的登錄頁面,待用戶身份認證通過后,用戶的相關(guān)信息加密后由認證中心以名為UNI_SESS的COOKIE[2]方式傳給客戶端瀏覽器,并重定向回各應(yīng)用系統(tǒng).各應(yīng)用系統(tǒng)分析從瀏覽器傳過來的所有COOKIE,從中提取名為UNI_SESS的COOKIE,拿來解密,根據(jù)解密后的UNI_SESS值對用戶訪問本應(yīng)用系統(tǒng)的權(quán)限進行認證,認證通過則創(chuàng)建本應(yīng)用系統(tǒng)的會話并允許用戶訪問本系統(tǒng),否則導(dǎo)向到統(tǒng)一認證中心作登錄.

下面是假設(shè)用戶登錄A應(yīng)用系統(tǒng)時進行統(tǒng)一認證的流程示意圖(其中左側(cè)的流程是A系統(tǒng)要做的,右側(cè)的流程是認證中心要做的),如圖4所示:

圖4 Cookie認證流程

統(tǒng)一認證流程說明如下:

1) 用戶通過瀏覽器訪問應(yīng)用系統(tǒng)A;

2) A系統(tǒng)檢測用戶有無有效的本系統(tǒng)的會話信息,有則直接進入A系統(tǒng);

3) 無的話應(yīng)用系統(tǒng)A檢測是否有UNI_SESS這個Cookie值;

4) 無則重定向到認證中心的登錄頁面,同時把A系統(tǒng)的訪問地址作為參數(shù)放在URL中傳給認證中心系統(tǒng),待登錄成功后重定向回來(例如某企業(yè):http:∥企業(yè)門戶系統(tǒng)的服務(wù)器地址/names.nsf?login&redirectto=sysurl,其中的sysurl是經(jīng)過編碼的訪問A系統(tǒng)的首頁的url).

5) 有則調(diào)用解密接口解密Cookie值UNI_SESS,解密后的結(jié)果是這樣的:cn=姓名&userid=用戶編號&userdept=部門&useroccupation=職務(wù)&usersys=應(yīng)用編號&userfun=操作功能 &logintime=登錄時間.uid是16位數(shù)字的用戶的唯一編號;部門含有用戶所在的部門的所有層次關(guān)系,各層次間用/分隔,最低一級層次在前,最高一級層次在最后,例如,**辦公室/**分公司/省公司;每個應(yīng)用系統(tǒng)都有一個事先約定好的編號,應(yīng)用編號是用逗號分隔的,允許該用戶訪問的所有應(yīng)用系統(tǒng)的編號列表,編號之間用逗號分隔,例如,1,3,7,代表用戶可以訪問編號為1或3或7的系統(tǒng);

6) 看本系統(tǒng)的編號是否羅列在應(yīng)用編號列表中,不在列表中則轉(zhuǎn)至3);

7) 若系統(tǒng)編號有在列表中,則比較登錄時間與當前系統(tǒng)服務(wù)器時間,若登錄時間比當前系統(tǒng)服務(wù)器時間早4 h以上,則不讓用戶登錄,轉(zhuǎn)至3);

8) 檢查該用戶在本系統(tǒng)的權(quán)限情況,若本系統(tǒng)允許該用戶訪問,則生成本系統(tǒng)的用戶會話認證信息,展示相關(guān)的頁面.

2.2 Cookie跨域的解決

若應(yīng)用系統(tǒng)A與統(tǒng)一認證中心不在同一個DNS域內(nèi)[3],則由于Cookie值的域限制問題,用戶在統(tǒng)一認證中心認證成功后獲得的認證Cookie值,A應(yīng)用系統(tǒng)無法獲取,因此無法采用Cookie的方式來進行單點登錄,但可以采用HTTP POST 的方法實現(xiàn).A應(yīng)用系統(tǒng)需要專門設(shè)計一個頁面(可以由原來的登錄頁面經(jīng)過簡單改造得到),用來接收統(tǒng)一認證中心提交過來的經(jīng)過加密的認證信息,原來是從Cookie值中取認證信息,變更為從POST提交的數(shù)據(jù)中取認證信息.就是在第4)步中的登錄URL寫成http:∥企業(yè)門戶系統(tǒng)的服務(wù)器地址/main.nsf/unilogin?openagent&redirectto=sysurl,其中的sysurl就是登錄成功后要把UNI_SESS值進行POST提交的A系統(tǒng)認證URL地址.

2.3 Cookie的安全

通常,在傳輸信道中,Cookie的傳輸形式是明文,信息太暴露,并且客戶端存儲是以文件形式,加重了安全威脅.因此,可采用PBE(passwod-based enerypt)加密算法[4],使用密匙才能解密讀出明文,有效地解決傳輸中存在的安全問題(表2).

表2 Cookie內(nèi)容

2.4 Cookie的實現(xiàn)

對接入的信息子系統(tǒng)進行注冊,注冊的信息有:子系統(tǒng)的名稱和簡稱,是否需要數(shù)據(jù)同步,同步通知URL和Socket約定,是否需要單點登錄,單點方式以及登錄時的URL.

(1) 接口規(guī)范.登錄的時候,同時設(shè)置Cookie的UNI_SESS的加密串,訪問其他業(yè)務(wù)系統(tǒng)時,業(yè)務(wù)系統(tǒng)取Cookie的UNI_SESS的加密串,解密后的格式為 cn=姓名&userid=用戶編號&userdept=部門&useroccupation=職務(wù)&usersys=應(yīng)用編號&userfun=操作功能&logintime=登錄時間.

如果取到用戶信息正確,則無須驗證,直接進入業(yè)務(wù)系統(tǒng) ,否則,導(dǎo)航到業(yè)務(wù)系統(tǒng)的認證界面.代碼實現(xiàn)如下:

∥ *** Cookies ***

function writeCookie(name.value){

exp=new Date();

exp.setTime(exp.gerTime()+86400*1000*30));

document.cookie=name+"="+escape(value)+";expires="+

exp.toGMTString()+";path=/"

}

function readCookie(name){

var search;

search=name+"=";

offset=document.cookie.indexOf(search);

if(offset !=-1){

offset+=search.length;

end=document.cookie.indexOf(";",offset0;

if(end==-1{

end=document.cookie.length;

}

return unescape(document.cookie.substring(offset.end));

}else{

return"";

}

}

(2) 后臺登錄表單改造.改造后的登錄表單至少需要包含3個設(shè)計元素:用戶名輸入框、密碼輸入框和登錄按鈕.用戶名輸入框的name屬性必須為Usemame,密碼輸入框的name屬性必須為Password,登錄按鈕的type屬性為Submit.

登錄表單的onload事件代碼如下:

var loginurl="∥yourserver/login.jsp";

var posturl="∥企業(yè)門戶系統(tǒng)的服務(wù)器地址/main.nsf/unilogin?open&redirectto="+escape(loginurl);

document.forms[0].action="∥企業(yè)門戶系統(tǒng)的服務(wù)器地址/servlet/UniLogin?Open&RedirectTo="+escape(posturl);

各應(yīng)用系統(tǒng)需要把loginurl的值換成自己系統(tǒng)的接收認證信息的url,該url就是經(jīng)過代碼改造的原登錄表單的action地址.

(3) 部分實現(xiàn)代碼.如實現(xiàn)讀取用戶信息的代碼如下:

dim strUniSess,objCrypt,userinfo

setobjCrypt=server.createobject("yccrypt.bfcrypt")

strUniSess=Request.Cookies("UNI_SESS")

strUniSess=objCrypt.UrlDecode(strUniSess,True)

response.write "UNI_SESS:" & strUniSess & "
"

if strUniSess="" then

response.write "Not Login"

else userinfo=objCrypt.YCDecrypt(strUniSess,"xycqgwgkuvi87860988")

response.write "UserInfo:" & userinfo & "
"

end if

3 結(jié)束語

以企業(yè)內(nèi)大量Web應(yīng)用系統(tǒng)為背景,研究對比了幾種常用單點登錄技術(shù)方案,分析和研究基于Cookie的單點登錄方案,并采用HTTP POST 的方法來解決跨域問題,為企業(yè)提供了一個方便快捷,管理輕松,成本低,安全性高的單點登錄認證機制.

參考文獻:

[1] 葉中奇, 劉向華.探秘企業(yè)級SSO[J/OL].2010-07-21.[2013/10/28].http:∥bbs.vsharing.com/Information/KM/1189024-1.html

[2] 馮偉華,劉亞麗.基于Cookie的統(tǒng)一認證系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機工程與設(shè)計,2010(6):40-44

[3] STAN REIMER,CONAN KEZEMA,MIKE MULCARE,et al.Windows Server 2008 活動目錄應(yīng)用指南[M].北京:人民郵電出版社,2010

[4] 王曉東.計算機算法設(shè)計與分析[M].北京:電子工業(yè)出版社,2001

猜你喜歡
表單單點解密
解密“熱脹冷縮”
電子表單系統(tǒng)應(yīng)用分析
華東科技(2021年9期)2021-09-23 02:15:24
解密“一包三改”
少先隊活動(2020年9期)2020-12-17 06:17:31
歷元間載波相位差分的GPS/BDS精密單點測速算法
炫詞解密
超薄異型坯連鑄機非平衡單點澆鑄實踐與分析
山東冶金(2019年5期)2019-11-16 09:09:10
淺談網(wǎng)頁制作中表單的教學(xué)
數(shù)字電視地面?zhèn)鬏斢脝晤l網(wǎng)與單點發(fā)射的效果比較
16噸單點懸掛平衡軸的優(yōu)化設(shè)計
解密“大調(diào)解”
健康| 玛多县| 启东市| 临安市| 特克斯县| 南江县| 双鸭山市| 盐山县| 龙江县| 德庆县| 峨山| 新平| 浦江县| 邻水| 巴东县| 凤山县| 夹江县| 佛学| 库尔勒市| 安塞县| 阜康市| 施秉县| 双峰县| 衢州市| 静海县| 都匀市| 弋阳县| 夏河县| 宜都市| 花莲市| 宁河县| 叙永县| 中超| 南丹县| 顺平县| 望江县| 昭平县| 合川市| 营山县| 阳春市| 息烽县|