單點登入的三種實現方式

2022-10-04 02:24:08 字數 1273 閱讀 7968

cookie 的作用域由 domain 屬性和 path 屬性共同決定。domain 屬性的有效值為當前域或其父域的網域名稱/ip位址,在 tomcat 中,domain 屬性預設為當前域的網域名稱/ip位址。path 屬性的有效值是以「/」開頭的路徑,在 tomcat 中,path 屬性預設為當前 web 應用的上下文路徑。

將 cookie 的 domain 屬性設定為父域的網域名稱(主網域名稱),同時將 cookie 的 path 屬性設定為根路徑,這樣所有的子域應用就都可以訪問到這個 cookie 了。

使用者統一在認證中心進行登入,登入成功後,認證中心記錄使用者的登入狀態,並將 token 寫入 cookie。(注意這個 cookie 是認證中心的,應用系統是訪問不到的。

應用系統檢查當前請求有沒有 token,如果沒有,說明使用者在當前系統中尚未登入,那麼就將頁面跳轉至認證中心。由於這個操作會將認證中心的 cookie 自動帶過去,因此,認證中心能夠根據 cookie 知道使用者是否已經登入過了。

如果認證中心發現使用者尚未登入,則返回登入頁面,等待使用者登入,如果發現使用者已經登入過了,就不會讓使用者再次登入了,而是會跳轉回目標 url ,並在跳轉前生成乙個 token,拼接在目標 url 的後面,回傳給目標應用系統。

應用系統拿到 token 之後,還需要向認證中心確認下 token 的合法性,防止使用者偽造。確認無誤後,應用系統記錄使用者的登入狀態,並將 token 寫入 cookie,然後給本次訪問放行。(注意這個 cookie 是當前應用系統的,其他應用系統是訪問不到的。)當使用者再次訪問當前應用系統時,就會自動帶上這個 token,應用系統驗證 token 發現使用者已登入,於是就不會有認證中心什麼事了。

從專業的角度來說(根據《計算機網路》中的定義),.com、.cn 為一級網域名稱(也稱頂級網域名稱),.com.cn、baidu.com 為二級網域名稱,sina.com.cn、tieba.baidu.com 為**網域名稱

從使用者的角度來說,一般把可支援獨立備案的主網域名稱稱作一級網域名稱,如 baidu.com、sina.com.cn 皆可稱作一級網域名稱,在主網域名稱下建立的直接子網域名稱稱作二級網域名稱,如 tieba.baidu.com 為二級網域名稱。

兩款認證中心

-》apereo cas。

->xxl-sso 

在前後端分離的情況下,完全可以不使用 cookie,我們可以選擇將 session id (或 token )儲存到瀏覽器的 localstorage 中,讓前端在每次向後端傳送請求時,主動將 localstorage 的資料傳遞給服務端。這些都是由前端來控制的,後端需要做的僅僅是在使用者登入成功後,將 session id (或 token )放在響應體中傳遞給前端。

單點登入的三種實現方式

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

單點登入的三種方式

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

單點登入的實現方式

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