SSO單點登錄/登出

SSO單點登錄

單點登錄是指用戶在某個應用系統上登錄之後,進入其子應用或相關應用系統可以免去登錄步驟,從而實現一次登錄,到處操作。如:有業務服務器a.com和b.com,還有SSO服務器 sso.com,在a.com上完成登錄操作之後訪問 b.com 時是已登錄狀態。

1、用戶首次訪問 a.com/user 時,到 a.com 服務器獲取不到session

2、給用戶彈出一個SSO的登錄頁面 sso.com/login.html,這個頁面會帶上兩個參數,分別是開發者平臺映射值key(即某個業務服務器在SSO所映射的key)和回調地址redirect(即登錄成功之後跳轉到的url,一般是所發起業務服務器開放的路由)

3、用戶輸入賬號密碼之後到SSO服務器上進行身份校驗,若校驗成功則給用戶生成一個ticket,並將該ticket值及用戶基本信息一起創建SSO服務器session

4、選擇某種加密方式對該請求的session進行加密之後生成一個token值,然後在回調地址redirect裏帶上token參數並跳轉回去a.com服務器。

5、a.com 對token參數進行解析後拿到用戶基本信息和ticket值,相應地初始化本地session並將ticket值也記錄下來。

6、用戶再次訪問 a.com/user 或其他頁面的時候,到 a.com 上獲取session併到 sso.com 上校驗ticket值得有效性,兩個操作都成功之後才返回用戶信息;若校驗ticket值失敗,則重新要求用戶進行登錄操作,即從步驟1開始。

7、現在用戶在 a.com 上的登錄和訪問流程已完成,那這時用戶訪問 b.com/user,到b.com上獲取不到session,則會重定向到 sso.com/session,因爲之前 a.com 已在 sso.com 上登錄過,故請求 sso.com/session 的時候SSO服務器能將session中用戶信息和ticket值返回給 b.com。

8、b.com 獲取到用戶信息和ticket值之後和 a.com 做相同的事情即可,這樣就完成了單點登錄的整個流程。

 

SSO單點登出

單點登出則是指用戶只要在 a.com 服務器上進行登出操作,則在其他業務服務器如b.com上也應處於未登錄狀態,單點登錄流程的步驟6中提到每次用戶訪問業務服務器路由檢驗用戶當前狀態時不僅僅查找本地有沒有session,還要到SSO服務器上校驗ticket值的有效性,所以只要有一個業務服務器登出時令ticket失效即可。

1、現在用戶是登錄狀態,他從 a.com 進行了退出操作,則自然 a.com 已將其session清除。

2、a.com 服務器同時還要攜帶ticket值發請求到 sso.com 將對應的記錄清除。

3、當訪問某個 b.com 某個頁面時,雖然在 b.com 服務器上獲取到session,此外還需要到SSO服務器上校驗一遍ticket值,而發現ticket值校驗失敗,則會提示用戶當前處於未登錄狀態。

4、這樣相當於 b.com 也已經是退出登錄,完成了單點登出的整個流程

發佈了117 篇原創文章 · 獲贊 6 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章