基於Session共享的單點登入或通行證系統方案

2021-07-30 15:33:28 字數 976 閱讀 2408

本文主要描述如何基於session共享來實現單點登入。

使用者訪問passport.example.com,輸入使用者名稱和密碼認證成功後,在服務端建立會話,sessionid以cookie形式儲存在根域example.com,使用者訪問www.example.com可以讀取到sessionid,服務端根據sessionid從會話中讀取相關認證資訊是否已存在,如已存在說明認證成功。這是乙個簡單的文字描述,下面貼一下截圖可以更形象的說明整個過程。

使用者訪問passport.example.com, 這個時候使用者尚未登入

使用者訪問passport.example.com/login,假設登入成功

使用者登入成功後訪問passport.example.com

使用者訪問www.example.com

可以看到雖然跨域了,但是sessionid相同,這是實現不同應用單點登入的必須條件。

下面看一下redis裡面的儲存情況。

以sessionid為key的value是一種hash結構。

通過hget命令可以看到儲存在會話中的user和account資料。

源**本文和**只是簡單介紹了原理,開發乙個健壯的單點登入系統還有很多任務作要做,這裡只是簡單介紹一下原理起到乙個拋磚引玉的作 用。

基於Flask session機制的單點登入

flask 預設的是 client side session flask by default usesthe werkzeug provided secure cookie as session system.it works by picklingthe session data,compres...

SSO 單點登入 Session共享

背景 tomcat集群可能因為兩次訪問的session不一致導致登入失敗,無法訪問後續頁面 解決可以通過tomcat互相進行session共享實現,但是這僅僅試用於小集群 如果集群變大,就會有大量session進行互相共享,負載很大 sso sso英文全稱single sign on,單點登入。ss...

redis實現session共享,實現單點登入

所需環境 兩台伺服器a和b模擬集群 兩台電腦 乙個mysql5.7,redis伺服器,demo分別部署在a和b中,a中名為demo1,b中名為demo2 為了加以區分 mysql5.7和redis都是在b中開啟的 測試原理 demo1在a中訪問login.jsp頁面登入進去之後會在瀏覽器儲存乙個js...