OAuth2與sso的結合思路


=首次登錄============================
1、用戶訪問A系統,A系統檢查自身的session(第三方系統概念,非統一認證中心概念),發現此人未登錄,轉到統一認證中心登錄檢查接口。
2、統一認證中心檢查接口,判斷下sso domain下是否存在 access_token,沒有表示需要進行首次登錄驗證。
3、跳轉到登錄頁面,要求輸入用戶名,密碼,驗證碼。
4、驗證通過后,
(1)為A系統生成一個授權碼authorization_code
(2)根據authorization_code+clientId+clientSecret ---->生成 access_token
(3)將access_token寫入sso domain 的cookie中
(4) 將authorization_code和access_token記錄到redis中。
5、將授權碼authorization_code通過ReturnUri跳轉給A系統.
6、A系統獲取到授權碼后,通過post方式驗證授權碼(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在則直接返回redis中的access_token值,否則驗證是不是合法授權碼,正確后,生成access_token返給A系統。
7、A系統確認authorization_code正確,並獲取到access_token后,可以實現自己的內部邏輯,比如記錄session等。
=二次訪問其它系統=====
1、用戶訪問B系統,B系統根據自身的檢查邏輯判斷,發現此人沒有登錄,轉到統一認證中心登錄檢查接口。
2、統一認證中心檢查接口,判斷下sso domain下是否存在 access_token,存在,表示已經在其它系統中登錄過了。
3、
(1)為B系統生成一個授權碼authorization_code
(2)根據authorization_code+clientId+clientSecret ---->生成 access_token
(3) 將authorization_code和access_token記錄到redis中。
4、將授權碼authorization_code通過ReturnUri跳轉給B系統.
5、B系統獲取到授權碼后,通過post方式驗證授權碼(authorization_code+clientId+clientSecret ),sso首先到redis中查找authorization_code是否存在,存在則直接返回redis中的access_token值,否則驗證是不是合法授權碼,正確后,生成access_token返給B系統。
6、B系統確認authorization_code正確,並獲取到access_token后,可以實現自己的內部邏輯,比如記錄session等。
刷新token====
1、在SSO中需要重寫domain下的cookie值access_token.
2、

注銷登錄=====
1、各系統通過類似於redis的方式,對於access_token進行保存,以后的內部程序的訪問,不必到統一認證中心檢查access_token的有效性。
2、提供退出接口,方便sso進行調用,統一實現退出邏輯。調用后,刪除本地的redis中access_token


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM