單點登入(SSO),從原理到實現

2021-08-21 00:04:48 字數 2063 閱讀 4838

cookie

sso認證中心發現使用者未登入,將使用者引導至登入頁面

使用者輸入使用者名稱密碼提交登入申請

sso認證中心校驗使用者資訊,建立使用者與sso認證中心之間的會話,稱為全域性會話,同時建立授權令牌

sso認證中心帶著令牌跳轉會最初的請求位址(系統1)

系統1拿到令牌,去sso認證中心校驗令牌是否有效

sso認證中心校驗令牌,返回有效,註冊系統1

系統1使用該令牌建立與使用者的會話,稱為區域性會話,返回受保護資源

使用者訪問系統2的受保護資源

系統2發現使用者未登入,跳轉至sso認證中心,並將自己的位址作為引數

sso認證中心發現使用者已登入,跳轉回系統2的位址,並附上令牌

系統2拿到令牌,去sso認證中心校驗令牌是否有效

sso認證中心校驗令牌,返回有效,註冊系統2

系統2使用該令牌建立與使用者的區域性會話,返回受保護資源

全域性會話存在,區域性會話不一定存在

全域性會話銷毀,區域性會話必須銷毀

單點登入自然也要單點登出,在乙個子系統中登出,所有子系統的會話都將被銷毀,用下面的圖來說明

系統1根據使用者與系統1建立的會話id拿到令牌,向sso認證中心發起登出請求

sso認證中心校驗令牌有效,銷毀全域性會話,同時取出所有用此令牌註冊的系統位址

sso認證中心向所有註冊系統發起登出請求

各註冊系統接收sso認證中心的登出請求,銷毀區域性會話

sso認證中心引導使用者至登入頁面

接收並儲存sso認證中心傳送的令牌

與sso-server通訊,校驗令牌的有效性

建立區域性會話

攔截使用者登出請求,向sso認證中心傳送登出請求

接收sso認證中心發出的登出請求,銷毀區域性會話

sso-server

驗證使用者的登入資訊

建立全域性會話

建立授權令牌

與sso-client通訊傳送令牌

校驗sso-client令牌有效性

系統註冊

接收sso-client登出請求,登出所有會話

public

void

dofilter

(servletrequest request, servletresponse response, filterchain chain)

throws ioexception, servletexception

//跳轉至sso認證中心

// 請求附帶token引數

SSO單點登入原理

單點登入系統 在系統a登入後,進入系統a和b均不用登入 那麼具體如何實現呢?如圖 1 訪問系統a,但因為沒有登入狀態,所以重定向到認證服務進行登入 2 登入成功後,讓瀏覽器儲存乙個cookie在xxlssoserver.com下,並請求重定向到系統a,3 重定向到系統a,並攜帶cookie,同時讓瀏...

單點登入SSO的實現原理

單點登入sso的實現原理 單點登入sso single sign on 說得簡單點就是在乙個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型 裡使用得非常頻繁,例如像阿里巴巴這樣的 在 的背後是成百上千的子系統,使用者一次...

單點登入SSO的實現原理

單點登入sso single sign on 說得簡單點就是在乙個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型 裡使用得非常頻繁,例如像阿里巴巴這樣的 在 的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個...