2018_02_26 sso原理解析

sso單點登錄適用於多系統共享登錄信息時,需要一個特定的sso認證中心來處理用戶的登錄,註銷請求,傳統的登錄操作中,用戶通過瀏覽器發送登錄請求到服務器上,服務器會創建一個回話,並將此次回話的sessionid返還給瀏覽器,瀏覽器拿到的sessionid作爲這個用戶用來訪問服務器的jsessionid,每次發送訪問請求時,都會將這個jsessionid帶上,同一個用戶發送第二次請求時,服務器校驗jsessionid是否有效,如果有效,允許訪問受保護的資源,如果無效,跳轉到登錄界面,這是傳統的登錄操作,但是web系統中越來越多的系統採用了分佈式,即將一個系統拆分成多個子系統整合組成一個系統,這種情況下,用戶登錄一個系統時就需要進行登錄的操作顯然是不合理的,這部分登錄驗證的操作應該交給系統自己完成,由此就誕生了sso單點登錄系統,它的出現是爲了解決多系統登錄註銷驗證多次的問題,即以前瀏覽器請求服務器的請求,將交由sso認證中心進行驗證,即用戶A訪問一個購物網站的首頁系統時,filter攔截器攔截訪問請求,判斷此次請求過程中,是否有已經生效的令牌,如果沒有,跳轉到登錄頁面,進行登錄,登錄校驗過程是由sso認證中心來完成的,當校驗通過,將A用戶的登錄狀態修訂爲登陸成功狀態,此時創建全局會話,並創建token令牌,只要保證此令牌唯一不可重複即可,uuid爲例,此時跳轉到A用戶請求的地址1,校驗令牌是否有效可用,如果可行,即可訪問地址1中的保護資源並創建局部會話,如果不可行,不允許訪問,此時如果A用戶繼續想訪問地址2的商品系統,可以直接判斷令牌是否存在,是否有效,如果都通過,放行訪問並創建局部會話,全局會話與局部會話之間的關係,局部會話存在一定要有全局會話;全局會話存在,可以沒有局部會話;全局會話銷燬的同時,要同時銷燬所有的局部會話。用戶註銷過程中,一定要保證銷燬全局會話的同時,銷燬已經建立的局部會話。(局部會話存儲在redis中,因爲在註銷過程中要明確將註銷的子系統都有哪些,存儲格式爲key:token,value:請求地址)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章