服務報價 | 域名主機 | 網絡營銷 | 軟件工具| [加入收藏]
?熱線電話: 130-5800-8007
當前位置: 主頁 > php教程 > php教程 >

PHP中SSO Cookie登錄分析和實現

時間:2017-04-06 23:24來源:未知 作者:最模板 點擊:
什么是SSO? 單點登錄SSO(Single Sign-On)是身份管理中的一部分。SSO的一種較為通俗的定義是:SSO是指訪問同一服務器不同應用中的受保護資源的同一用戶,只需要登錄一次,即通過一個

什么是SSO?

單點登錄SSO(Single Sign-On)是身份管理中的一部分。SSO的一種較為通俗的定義是:SSO是指訪問同一服務器不同應用中的受保護資源的同一用戶,只需要登錄一次,即通過一個應用中的安全驗證后,再訪問其他應用中的受保護資源時,不再需要重新登錄驗證

SSO的用途:

目前的企業應用環境中,往往有很多的應用系統,淘寶、天貓、愛淘寶等等產品和如辦公自動化(OA)系統,財務管理系統,檔案管理系統,信息查詢系統等等。這些應用系統服務于企業的信息化建設,為企業帶來了很好的效益。但是,用戶在使用這些應用系統時,并不方便。用戶每次使用系統,都必須輸入用戶名稱和用戶密碼,進行身份驗證;而且應用系統不同,用戶賬號就不同,用戶必須同時牢記多套用戶名稱和用戶密碼。特別是對于應用系統數目較多,用戶數目也很多的企業,這個問題尤為突出。問題的原因并不是系統開發出現失誤,而是缺少整體規劃,缺乏統一的用戶登錄平臺,使用SSO技術可以解決以上這些問題

SSO的好處:

方便用戶:從用戶實際使用角度考慮

用戶使用應用系統時,能夠一次登錄,多次使用。用戶不再需要每次輸入用戶名稱和用戶密碼,也不需要牢記多套用戶名稱和用戶密碼。單點登錄平臺能夠改善用戶使用應用系統的體驗。

方便管理員:從日常維護管理角度考慮

現在很多大的互聯網公司都會有很多的應用,比如以下是淘寶網的截圖:

天貓 聚劃算 頭條等都是不同的應用,有的甚至采用完全不同的域名,但是所有在淘寶注冊的用戶都是使用的一套用戶名和口令,如果在這些系統直接切換做不到登陸狀態的同 步,體驗是非常差的。再舉個栗子,很多公司內部系統也有很多個,比如HR系統,財務系統,考勤系統等等,如果員工在一個系統登陸了,跳轉到另外一個系統還 需要登陸,就會讓人很不爽...

基于此,SSO(Single Sign On)應運而生。當然,我們來現實這個需求的方法有很多種,使用Cookie是其中比較簡單的方式,主要需要解決的問題是:Cookie是不能跨域傳遞的,如何將一個域的Cookie通知給其它應用(不在同一個域)?

so,如果你對cookie機制不太熟悉,請先google,并大致了解為什么cookie會設計成不能跨域等相關問題。

系統管理員只需要維護一套統一的用戶賬號,方便、簡單。相比之下,系統管理員以前需要管理很多套的用戶賬號。每一個應用系統就有一套用戶賬號,不僅給管理上帶來不方便,而且,也容易出現管理漏洞。

簡化應用系統開發:從應用擴展角度考慮

開發新的應用系統時,可以直接使用單點登錄平臺的用戶認證服務,簡化開發流程。單點登錄平臺通過提供統一的認證平臺,實現單點登錄。因此,應用系統并不需要開發用戶認證程序。

如何實現?

SSO有以下幾種方式實現

共享Cookie

當我們的子系統都在一個父級域名下時,我們可以將Cookie種在父域下,這樣瀏覽器同域名下的Cookie則可以共享,這樣可以通過Cookie加解密的算法獲取用戶SessionID,從而實現SSO。

但是,后面我們發現這種方式有幾種弊端:

a. 所有同域名的系統都能獲取SessionID,易被修改且不安全;

b. 跨域無法使用。

ticket驗證,我們目前采取的是這種方式

這種實現的SSO有以下幾個步驟:

a. 用戶訪問某個子系統,發現如果未登錄,則引導用戶跳轉到SSO登錄頁面;

b. 判斷SSO是否已經登錄;

c. 如果已經登錄,直接跳轉到回調地址,并返回認證ticket;

d. 如果未登錄,用戶正確輸入用戶名/密碼,認證通過跳轉到回調地址,并返回認證ticket;

e. 子系統獲取ticket,調用SSO獲取用戶uid等信息,成功后讓用戶登錄。

前面已經說了,如何通過Cookie來實現SSO,主要是如何解決跨域問題。首先來談談Set-Cookie中的domain屬性。

Cookie domain

為了讓Http協議在一定程度上保持上下文,server在響應的頭部可以加入Set-Cookie來寫入一些數據到客戶端,Set-Cookie中的

domain字段用來表示這個cookie所在的域。

栗子:

我們訪問 www.cookieexm.com ,如果server在返回頭部中加入了Set-Cookie,如果不指定domain,那么默認這個cookie的域就是 www.cookieexm.com ,也就是只有訪問 www.cookieexm.com 時客戶端才會把這個cookie返給服務端。

如果我們指定domain為.cookieexm.com,那么客戶端在訪問以下域名: www.cookieexm.com www1.cookieexm.com a.cookieexm.com ***.cookieexm.com 時都能夠把cookie返回。

所以,我們得出一條結論:客戶端對cookie的domain的匹配是從結尾進行匹配的,有了這個基礎,我們就可以實現我們的SSO登陸了。(責任編輯:最模板)

頂一下
(1)
100%
踩一下
(0)
0%
------分隔線----------------------------
欄目列表
熱點內容
体彩22选5开奖结果