java cookie 跨域共享_JavaWeb 系统共享跨域cookie的实现
【實例簡介】
單點登錄系統(tǒng)整合了各個應(yīng)用系統(tǒng)的身份認證。用戶在單點登錄系統(tǒng)中完成認證后,就可以訪問具有訪問權(quán)限的應(yīng)用系統(tǒng)。為了減輕單點登錄系統(tǒng)的負擔(dān),用戶的瀏覽器地址需要從單點登錄系統(tǒng)的網(wǎng)址重定向到應(yīng)用系統(tǒng)的網(wǎng)址。通過使用跨域cookie方法,在兩種服務(wù)器環(huán)境里面實現(xiàn)了這種重定向。
12
北京聯(lián)合大學(xué)學(xué)報(自然科學(xué)版)
2012年11月
(如圖4),在域“.tesl. cookies.cn”和域“. cookies.域“. tell. cookies.cm”中的“ ISESSIONID”的值總是
cn”中,“ JsESSIONII”的值相等。這次 Javaweb系比域“. cookies.cn”中的 ISESSION”的值多相同
統(tǒng)只創(chuàng)建了一個 session,頭現(xiàn)了共享跨域 cookie。的字符串:“0000”和“:-1”。
另外,在 Apache Tomcat6.0的運行環(huán)境中,保
如果不使用單點登錄系統(tǒng),而是直接登錄訪問
存 sessionId的 cookie名稱必須是人寫的 Java Web系統(tǒng),那么系統(tǒng)生成的“ JSESSIONID”值包
“ JSESSIONID”。如果把名稱寫成小寫的含宇符串“0000和“:-1”(如圖8)。經(jīng)過多次實
jsessionid”,那么 Java Web系統(tǒng)在跨域重定向之驗,每次杳看coki信息都是這種情況
前,會把小寫的“ jsessionid”存放在 cookie里面(如
由此假設(shè),在 Websphere6.1的運行壞境中,
圖5)。因為系統(tǒng)在跨域重定向之后,域“. cookies. Java Web系統(tǒng)不能接受不包含字符串“0000”和“
cn”中只有小寫的“ jsessionid”,而在域名“test2
1”的“ JSESSIONID”。也就是說,在圖7中,保存
cookies.cn”中獲取不到大寫的“ JSESSIONID”在域“.test1. cookies.cn”中的“ JSESSIONID”的值能
(“ JSESSIONID”屬于域“. test1. cookies.cn”),所以被 Java Web系統(tǒng)使用,而保存在域“. cookies.cn”中
尢法實現(xiàn)共享 cookie中的 sessionld。系統(tǒng)在這種的“ SESSIONID”的值不能被使用。
情況下,會重新創(chuàng)建新的 session(“ JSESSIONID”如
在此假設(shè)的基礎(chǔ)上,將域“. cookies.cn”中的
圖6),最終,用戶通過單點登錄系統(tǒng)無法正常訪問“ JSESSIONID”的值進行擴展。在 Java Web系統(tǒng)跨
Java Web系統(tǒng)。
域重定向之前,先獲取 session的 session值,然后
2 Java Wel系統(tǒng)在 Websphere6.1中把宇符“000和:-1”添加到 session上面,
最后將 session保存在域“. cookies.cn”中的
共享跨域
cookIe
JSESSIONID”里面。實現(xiàn)共享跨域 cookie的代碼
如果把在 Apache Tomcat6.0中創(chuàng)建的 Java Web如下:
系統(tǒng)直接部署到 Websphere6.1里面,那么用戶通
/獲得
session
過單點登錄系統(tǒng)(http://testl.cookiescn)訪問
Http sessioN session =( HttpservletrEquest )
JavaWeb系統(tǒng)(htp:/test2. cookies,cn),在重定向 request. getSession()
后,就不能繼續(xù)訪問 Java Web系統(tǒng)。
//對 session進行擴展
使用 Http Watch Professional7.0工具查看
String sessionId =0000"+ session. getld()
cookie信息,在重定向前,有兩個“ JSESSIONID”(如
圖7)。通過多次實驗,每次的 cookie信息都顯示,
//為 session創(chuàng)建 cookie。
Overview Time Chart Headers Cookies Query String POST Data Content Strea
Cookie Name Direction Walu
Path Doma
ExPires
I5ESSIONID Received 4F187280585A2D10779773A0CB53218C /test test 1. cookies. cn (Session
JsESSIONID Received 4F18728058542D10779773A0CB53218C
Cookes, ch
(Session)
圖4跨域重定向前的 ISESSIONID
OrerviewTime Chart Headers Cookies Cache Query String POST Data Content Stream
Cookie Name DirectionValue
PathDomain
Expires
ISESSIONID Received FO2B8CAFBD5530C6EFOEBE62D33049B6 /test test1, cookies, cn (Session)
Received F02B8CAFBD5530C6EFOEBE62D33049B6 f
cookes. Cn
EssIon〕
圖5跨域重定向前的 jsessionid
Overview Time Chart Headers Cookies Cache Query String POST Data Content Stream
Cookie NameDirectionValue
PathDomain
Expires
]sessionid
F02B8CAFBD5530C6EFOEBE62D33049B6
CooKes, cn
JSESSIONID Received D7 DA0E2D86A7BDEFD5A70861BCE04A9F /test test2. cookies, cn (Session)
圖6跨域重定向后的 JSESSIONII
第26卷第4期
張二松等: Java Web系統(tǒng)共享跨域 cookie的實現(xiàn)
13
Cookie session Cookie= new Cookie(" ISESSIONID", Java Web系統(tǒng)。用戶在訪問 Java Web系統(tǒng)的整個過
session
程中,一直使用域“. cookies.cn”中的
/設(shè)置保存 cookie的路徑
∵ JSESSIONID”的值(如圖10)。由此證明前面的假
session Cookie. setPath("/")
設(shè)是正確的。
/設(shè)置可以訪問 cookie的域名
session Cookie sel Donain(". cookies. cn")
3結(jié)東語
用戶能夠通過單點登錄系統(tǒng)正常訪問包含了
通過借助 Http Watch Professional7.0工具,解
上面代碼的 Java wcb系統(tǒng)。查看 cookie(如圖9),決了共享跨域 cookie中的疑難問題。在 Apache
在域“. cookies.cn”中的“ JSESSIONID”的值,已經(jīng) Toma6.0和 Websphere6.1兩種服務(wù)器環(huán)境中,實
包含了字符串“0000”和“:-1”,并且和域“.test1.現(xiàn)了共享跨域 cookie,并完成了從單點登錄系統(tǒng)到
cookies.cn”中的“ JSESSIONID”的值相等。經(jīng)過多 Java wel系統(tǒng)的重定向。最終,用戶能夠通過單點
次測試,用戶通過單點登錄系統(tǒng)都能正常訪問脊錄系統(tǒng)正常訪問 Java Web系統(tǒng)。
Overview Time Chart Headers Cookies Cache Query String POST Data Content Stream
Cookie NameDirectionValue
PathDomain
Ex
J5ESSIONID Received 0000gij 1 Kul GNLCIOGbRPU8i5v:-1
test1. cookies, cn (Session)
JsESSIONid Received gij1k2u 1 GNLCIOGbRPUBi5
cookies, cn
圖7跨域重定向前的 JSESSIONID
OverviewTime Chart Headers Cookies Cache Query String POST Data ContentStream
Cookie Name DirectionWalue
PathDomain
ISESSIONID Received 000OrvO0vF2Ln7NZ6zgDYdSN5Vj: -1
test2. cooh
( Sess
圖8直接訪問 Java Web系統(tǒng)時的 JSESSIONID
Overview Time Chart Headers Cookies Cache Query String POST Data Content Stream
Cookie Name Direction value
Path Domain
Expires
JSESSIONID Received 00001zQL75TNUMW36y Cmi 3q Ws0: -1 f
test1. cookies, cn (Session
I5ESSIONID Received 00001zQL75TNUMW36yXCmi3qWs0: -1
cookies, cn
Session
圖9跨域重定向前的 JSESSIONID
Overview Time Chart Headers Cookies Cache Query String POST Data Content eteam
Cookie Name Direction value
PathDomain
Expires
]5ES5IONID Sent
000012QL75TNUMiM'36yXCmi 3qWs0: -1
COokes. cn
(Session)
圖10跨域重定向后的 ISESSIONID
[參考文獻]
1」劉潤達,諸云強,宋佳,等.·種簡單跨域單點登錄系統(tǒng)的實現(xiàn)[J」.計算應(yīng)用,2007,27(4):288-291
2]王俊才.一種基于Coke的單點登錄系統(tǒng)的設(shè)計與實現(xiàn)[J].計算機與數(shù)字工程,2008(4):94,95,111.
3]沈海波,洪帆.基于 Cookie的跨域單點登錄認證機制分析[J.計算機應(yīng)用與軟件,2006,23(12):48-51
4]廖禮萍,鮑有文.基于跨域 Cookie的單點登錄系統(tǒng)的設(shè)計與實現(xiàn)[J].北京聯(lián)合大學(xué)學(xué)報:自然科學(xué)版,2008,22(4):
29-33
(責(zé)任編輯李亞青)
【實例截圖】
【核心代碼】
總結(jié)
以上是生活随笔為你收集整理的java cookie 跨域共享_JavaWeb 系统共享跨域cookie的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS时间的计算,剩余时间的计算
- 下一篇: 百数人力行政管理系统能力展示——人力资源