什么是單點登錄
單點登錄(Single Sign On)是指在多系統應用群中登錄一個系統,便可在其他所有系統中得到授權而無需再次登錄,包括單點登錄與單點注銷兩部分
實作方式一:父域 Cookie
Cookie 有一個特點,即父域中的 Cookie 被子域所共享,換句話說,子域會自動繼承父域中的Cookie,
利用 Cookie 的這個特點,將 Session ID(或 Token)保存到父域中就行了,我們只需要將 Cookie 的 domain 屬性設定為父域的域名(主域名),同時將 Cookie 的 path 屬性設定為根路徑,這樣所有的子域應用就都可以訪問到這個 Cookie 了,
要求系統的域名需建立在一個共同的主域名之下,如 tieba.baidu.com 和 map.baidu.com他們都建立在了baidu.com這個主域名之下,可以使用這種方式實作單點登錄
優缺點:此種實作方式比較簡單,但不支持跨主域名
實作方式二:認證中心
相比于單系統登錄,sso需要一個獨立的認證中心,只有認證中心能接受用戶的用戶名密碼等安全資訊,其他系統不提供登錄入口,只接受認證中心的間接授權,間接授權通過令牌實作,sso認證中心驗證用戶的用戶名密碼沒問題,創建授權令牌,在接下來的跳轉程序中,授權令牌作為引數發送給各個子系統,子系統拿到令牌,即得到了授權,可以借此創建區域會話,區域會話登錄方式與單系統的登錄方式相同,
系統登錄流程圖

單點退出流程
用戶在SSO系統登錄后創建token,保存token到資料庫t_token表中,當子系統登錄時,將該token的子系統資訊:退出url和jsessionid資訊保存到t_client_info表,一對多關系,當用戶點擊退出時,呼叫SSO系統/logOut方法,銷毀sesseion,并在web.xml中注冊session監聽器,當有銷毀操作時,調出t_client_info表物件資訊,并依次呼叫子系統的/logOut方法,根據jsessionid銷毀子系統中session物件資訊,從而實作全部退出,
認證中心示例:
代碼地址:https://gitee.com/jun-yuqing/project
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/261814.html
標籤:其他
