SSO單點登錄筆記(原理)

SSO單點登錄(原理)

單點登錄全稱Single Sign On(以下簡稱SSO),是指在多系統應用羣中登錄一個系統,便可在其他所有系統中得到授權而無需再次登錄,包括單點登錄與單點註銷兩部分。

-------------------------------------------------------------------------------------------------------------------------------------------------------

相比於單系統登錄,sso需要一個獨立的認證中心只有認證中心能接受用戶的用戶名密碼等安全信息,其他系統不提供登錄入口,只接受認證中心的間接授權間接授權通過令牌實現,sso認證中心驗證用戶的用戶名密碼沒問題,創建授權令牌,在接下來的跳轉過程中,授權令牌作爲參數發送給各個子系統,子系統拿到令牌,即得到了授權,可以藉此創建局部會話,局部會話登錄方式與單系統的登錄方式相同。這個過程,也就是單點登錄的原理,用下圖說明

單點登錄客戶端Cookie和服務端Session圖解

步驟1:

描述:初始狀態:沒有請求,服務端沒有session,客戶端也沒有cookie

步驟2:

描述:當客戶端訪問www.crm.com時,本地沒有cookie,在crm.com服務端中查看是否有局部session,此時發現crm.com系統並沒有,尷尬的局面需要緩解一下,需要查看統一認證中心(sso.com服務端)是否有登錄(然而此時並沒有,雖然合乎情理,但又尷尬了),此時,需要做一件很重要的事情:把當前請求的地址作爲參數傳遞給統一認證中心!!!

步驟3:

描述:由於這是客戶端第一次對這個系統的訪問,客戶端瀏覽器Cookie中的sso.com目錄也沒有cookie,所以sso.com服務端也沒有全局的session,這時候調用sso.com中的checkLogin方法查看當然不會有全局的session。

步驟4:

描述:此時需要把redirectUrl從地址欄中獲取出來,把這個參數放入到request域中,一起轉發到統一認證的登錄頁面。

步驟5:

描述:在統一認證中心登錄界面輸入賬號和密碼,並帶着上一次訪問的地址(因爲登錄成功以後,需要跳轉到上次訪問的頁面)請求到 sso.com服務端進行身份校驗(查詢數據庫);校驗成功即後臺登錄成功,需要在sso.com中創建session對象和token(令牌),並把這個token信息放入到session中,方便後續的校驗;把session的id以cookie方式寫入到客戶端的瀏覽器中;重定向到最開始訪問的頁面(會帶着sso.com產生的token)

步驟6:

描述:客戶端瀏覽器重定向到crm.com&token=*****,過濾器攔截到請求,判斷是否有局部session,發現其並沒有,但是帶着token參數,則此時爲了保證安全,必須檢驗token的有效性,即判斷這個token是否來源於統一認證中心。

步驟7:

描述:使用HttpURLConnection發送請求(這個請求帶着token)到sso.com服務端,sso.com查詢數據庫,看是否存在該token,如果存在,則返回ture,否則返回false

步驟8:

描述:crm.com服務端接收到sso.com服務端的響應(token是ture還是false),若結果爲ture,crm.com服務端就會創建局部session,並設置屬性isLogin=ture;放行客戶端的請求,客戶端顯示請求的頁面,同時,將crm.com服務端的JSESSIONID寫入到客戶端的Cookie的crm.com目錄下,方便第二次及之後的訪問!!!

步驟9:

描述:第二次訪問crm.com時,請求會把本地瀏覽器的Cookie帶上(當然是crm.com目錄中的),在crm.com服務端能找到對應的session,並得到相應的isLogin的屬性,是ture,說明已經有局部會話了,此時就放行請求

步驟10:

描述:訪問wms.com服務端的原理同上

步驟11:

步驟12:

步驟13:

步驟14:

步驟15:

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章