基於二級網域名稱下Cookie共享的SSO

2021-05-12 10:15:55 字數 1321 閱讀 8002

網上已經有很多基於二級網域名稱下cookie共享的sso的解決方案,對於原理大家可能都很了解,無非就是登入乙個系統,產生乙個令牌儲存到client端的cookie中,這個cookie是基於主網域名稱的,然後再登入其它二級網域名稱下的系統,就會直接讀取主網域名稱下的cookie中的令牌,不要重新登入,方面使用者使用多個系統。正好做到的專案中用到這個sso登入驗證,自己除錯中遇到一些問題,以及解決方案,跟大家分享一下。

我的專案中有兩個系統,網域名稱分別是a.test.com,b.test.com(舉例),test.com是一級網域名稱,a.test.com&b.test.com是二級網域名稱。任務是要做到在a登入後可以直接進入b系統,b系統會驗證cookie的令牌資訊,正確的令牌才允許訪問進入系統。a系統訪問路徑是http://a.test.com/x,b系統的訪問路徑是http://b.test.com/y。

好了,下面開始說明一下我的解決歷程:

1.編碼

在a系統登入成功後寫入cookie

cookie cookie=new cookie("token","令牌資訊");//關於令牌名稱可以約定乙個,到時b系統會根據這個名稱去獲取令牌資訊,資訊令牌是加密處理r後的字串,如何加密這裡不再贅述。

cookie.setdomain("test.com");//是基於一級網域名稱的

cookie.setmaxage(1800);//設定cookie的有效期

response.addcookie(cookie);

2.測試檢查

通過http://a.test.com/x訪問後,cookie目錄出現乙個[email protected][1]的cookie檔案,檢視ie快取目錄,有一條名為x/的記錄,internet位址為cookie:[email protected]/x,系統快取目錄位址c:/documents and settings/administrator/local settings/temporary internet files,我的是xp系統,cookie目錄位址c:/documents and settings/administrator/cookies。

通過http://b.test.com/y訪問後,根據讀取不到這個cookie,為了測試方便,我在y/下的index.jsp中,寫了一段**,就是往cookie中寫一些資訊,看它會儲存到哪個cookie檔案中,測試後發現在cookie目錄會生成乙個[email protected][2]的檔案,然後再ie快取有一條名y/的記錄,internet位址為cookie:[email protected]/y,反覆訪問重新整理後,a和b的cookie總會不一樣,檔名分別在[1],[2]之間變換,反正就不會是乙個檔案。

3.反覆分析

4.總結

cookie共享於二級網域名稱

糾結了半天,終於搞定了cookie在主網域名稱下各個二級網域名稱可共享問題.對於任何web 前端技術,都可以對建立cookie並且可以修改同域下cookie的資料.乙個cookie是乙個k v的字串,同時可以傳遞一些屬性.cookie cookie new cookie key value cook...

二級網域名稱共享cookies

如 現在有乙個站 www.abc.com 子站 123.abc.com 希望從主網域名稱登入,或者從子域登入可以同步,也就是說 只要從任何乙個站下登入都可以不在在另乙個站登入 網上介紹了很多方法,我都試過了,都不行,主要原因是 不能清除cookies,最後我沒有辦法了,就放棄不搞這個了,晚上看電影 ...

二級網域名稱session 共享方案

1.利用cookie存放session id 例項 網域名稱一檔案php session start setcookie session id session id time 3600 24 365 10,session.com session user name 梁山良民 echo session...