最強SSO單點登入教程(三)單點登出流程分析
作者:藍雄威,叩丁狼教育高階講師。原創文章,轉載請註明出處。
一、前言
單點登入自然也要單點登出,在一個子系統中登出,所有子系統的會話都將被銷燬,用下面的圖來說明:
步驟分析:
1.使用者在CRM系統中點選登出按鈕.會重定向到統一認證中心的登出方法
2.統一認證中心接受到登出請求之後,會銷燬全域性的會話.
3.統一認證中心會拿到之前在該系統中註冊的子系統集合.
4.依次的呼叫子系統的登出方法,銷燬區域性會話.
5.每個系統中的會話都已經銷燬之後,跳轉到登陸頁面.
二、系統中的Cookie和Session儲存圖解
以下圖解是基於單點登入圖解,在之前的基礎上,新增一些資訊來幫我們更好的完成單點登出的功能.
圖01:我們在統一認證中心登入成功後.除了需要做這幾件事情.
1.建立令牌,後續操作中得發給子系統,相當於間接授權.
2.建立全域性會話,並把令牌儲存到全域性會話中.
3.把令牌資訊儲存到資料庫中的t_token表中.主要是後續客戶端校驗token的有效性需要查詢這種表.
4.重定向到之前使用者請求的地址redirectUrl.並把令牌發給該子系統.http://www.crm.com/employee?token=VcnVMguCDWJX5zHa
還需要建立一張t_client_info資訊
這張表儲存的是究竟有哪些子系統在統一認證中心註冊了.
在單點登入的時候拿到註冊子系統的集合,依次呼叫子系統的登出方法.
圖02:我們在CRM系統給統一認證中心傳送一個校驗令牌token有效性的請求的時候.
除了帶上令牌token資訊之外.還需要帶上如下資訊:
1.客戶端的登出地址:
http://www.crm.com/logout
2.客戶端的JSESSIONID(目的是在呼叫客戶端銷燬方法的時候能找到對應的會話並銷燬)
所以此時請求的地址為:http://www.sso.com/verify?token=VcnVMguCDWJX5zHa&clientUrl=http://www.crm.com/logout&JSESSIONID=F4C441B40D00A03DD8DDEBF751F2BF01
圖03:當兩個系統都已經在統一認證中心註冊好之後,資料庫表t_token中儲存的資訊如下圖所示.
圖04:我們在CRM系統中點選登出按鈕,這個登出按鈕的地址其實指向
http://www.sso.com/logout
,訪問的是統一認證中心的登出方法.
圖05:瀏覽器發出請求
http://www.sso.com/logout
,瀏覽器會根據請求的域名找到本地的sso.com
目錄cookie,並把cookie裡面的資訊一併帶到伺服器.d通過cookie中的JSESSION可以找到統一認證中心的會話物件.
圖06:拿到統一認證中心的會話物件之後
1.取出會話中的令牌資訊token,通過令牌資訊在表t_clinet_info中找到之前註冊的子系統集合.
2.遍歷子系統集合,依次呼叫子系統的登出方法,並把JSESSIONID帶上.
圖07:子系統接受到請求之後,根據JSESSIONID找到對應的會話物件進行銷燬.
圖08:需要把令牌資訊從資料庫中刪除.
圖09:清除全域性會話物件.
圖10:響應統一認證中心的登陸頁面
統一認證中心與客戶端通訊方式有多種,這裡以簡單好用的HttpURLConnection為例,WebService、rpc、restful api都可以.
相關文章
- 初探單點登入 SSO
- SSO單點登入邏輯
- (十二) 整合spring cloud雲架構 - SSO單點登入之OAuth2.0 登出流程(3)SpringCloud架構OAuth
- CAS單點登入(SSO)實戰(一)
- Casdoor + OAuth 實現單點登入 SSOOAuth
- CAS SSO單點登入框架學習框架
- 單點登入 SSO 的實現原理
- OAuth2實現單點登入SSOOAuth
- 【SSO】--單點登入之過濾器(filter)過濾器Filter
- 記一次 SSO 單點登入實現
- 單點登入SSO和Oauth2.0 文章3OAuth
- SSO(單點登入)MD5加鹽 原理案例教程 火推
- SSO單點登入三種情況的實現方式詳解
- 絕對完全跨域統一單點登入登出跨域
- CAS實現單點登入SSO執行原理探究
- CAS SSO單點登入服務端環境搭建服務端
- CAS SSO單點登入客戶端環境搭建客戶端
- 實戰模擬│單點登入 SSO 的實現
- 談談SSO單點登入的設計實現
- 【SSO】--實現單點登入研究過程總結
- CAS SSO單點登入服務端環境搭建之框架深度分析服務端框架
- CAS SSO單點登入客戶端環境搭建之框架深度分析客戶端框架
- CAS 單點登入流程
- java B2B2C Springboot電子商城系統- SSO單點登入之OAuth2.0 登出流程(3)JavaSpring BootOAuth
- SSO單點登入最全詳解(圖文全面總結)
- .關於CAS SSO單點登入服務端環境搭建原始碼分析服務端原始碼
- 關於CAS SSO單點登入客戶端環境搭建原始碼分析客戶端原始碼
- (十一) 整合spring cloud雲架構 - SSO單點登入之OAuth2.0登入流程(2)SpringCloud架構OAuth
- 單點登入原理
- 不務正業的前端之SSO(單點登入)實踐前端
- 3.CAS SSO單點登入客戶端環境搭建客戶端
- 單點登入的三種實現方式
- 對SSO單點登入和OAuth2.0的區別和理解OAuth
- spring cloud微服務分散式雲架構-單點登入(SSO)SpringCloud微服務分散式架構
- Spring+ Spring cloud + SSO單點登入應用認證SpringCloud
- 完全跨域的單點登入(SSO)解決方案原始碼解析跨域原始碼
- 推薦一個分散式單點登入框架XXL-SSO!分散式框架
- spring+springmvc+Interceptor+jwt+redis實現sso單點登入SpringMVCJWTRedis