OAuth2與sso的結合思路

2022-02-07 07:40:37 字數 1649 閱讀 7819

=首次登入

*************************===

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

SSO 單點登入CAS與OAuth2

在系統開發初期,系統很少,每個系統都有自己的登入模組,使用者直接使用自己的賬號進行登入即可。但當功能不斷完善,為了合理利用資源並降低耦合性,往往需要將單系統拆分為多個子系統。以阿里系的 為例,乙個 背後有眾多的子系統,使用者的一次交易或操作往往可能需要十多甚至幾十個子系統的協作,如果每個子系統都需要...

springboot結合oauth2實現許可權認證

1.什麼是jwt json web token jwt 是為了在網路應用環境間傳遞宣告而執行的一種基於json的開放標準 rfc 7519 該token被設計為緊湊且安全的,特別適用於分布式站點的單點登入 sso 場景。jwt的宣告一般被用來在身份提供者和服務提供者間傳遞被認證的使用者身份資訊,以便...

基於JWT和Oauth2 實現 SSO 單點登入

1.jwt 的特點 自包含 在jwt裡面可以包含很多資訊,可從伺服器解析,而不僅僅是一串沒有意義的字串。密簽 安全簽名,防止別人篡改。可擴充套件 因為jwt可以包含有用的資訊,所以其具有不俗的擴充套件性。如圖 1.流程 訪問應用a服務,會跳到認證伺服器的登入頁面,輸入使用者名稱和密碼登入後,再訪問應...