sso單點登入和跨域問題

2021-10-04 06:06:44 字數 1516 閱讀 2657

sso

sso英文全稱single sign on,單點登入。sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同乙個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。

體系結構

當使用者第一次訪問應用系統1的時候,因為還沒有登入,會被引導到認證系統中進行登入;根據使用者提供的登入資訊,認證系統進行身份校驗,如果通過校驗,應該返回給使用者乙個認證的憑據--token;使用者再訪問別的應用的時候就會將這個token帶上,作為自己認證的憑據,應用系統接受到請求之後會把token送到認證系統進行校驗,檢查token的合法性。如果通過校驗,使用者就可以在不用再次登入的情況下訪問應用系統2和應用系統3了 。

token(令牌)

token的意思是「令牌」,是服務端生成的一串字串,作為客戶端進行請求的乙個標識。

當使用者第一次登入後,伺服器生成乙個token並將此token返回給客戶端,客戶端收到token後把它儲存起來,可以放在cookie或者local storage(本地儲存)裡。 以後客戶端只需帶上這個token前來請求資料即可,無需再次帶上使用者名稱和密碼。

簡單token的組成;uid(使用者唯一的身份標識)、time(當前時間的時間戳)、sign(簽名,token的前幾位以雜湊演算法壓縮成的一定長度的十六進製制字串。為防止token洩露)。

設計token的值可以有以下方式

1、用裝置mac位址作為token2、用sessionid作為token

實際上,http協議是無狀態的,單個系統的會話由服務端session進行維持,session保持會話的原理是通過cookie把sessionid寫入瀏覽器,每次訪問都會自動攜帶全部cookie,在服務端讀取其中的sessionid進行驗證實現會話保持。同域下單點登入其實就是手寫token代替sessionid進行會話認證。

token的生成

服務端生成token後,將token與user物件儲存在map結構中,token為key,user物件為value,response.addcookie()生成新的cookie,名為token,值為token的值。

token過期移除

將服務端的token從map中移除,再刪除瀏覽器端的名為token的cookie。

認證流程

當有多個系統時,認證機制的流程如下:

提供使用者登入介面,供使用者進行身份認證使用者驗證通過後,生成新token將tokenuser 對存入全域性map中供校驗將token寫入所有域的cookie中頁面重定向回原始請求url分析

當系統有多個並且在不同域(domain)時,cookie只會作用在當前域下。將token寫入所有域的cookie中才是解決跨域sso的核心。

SSO單點登入

單點登入sso single sign on 就是在多個系統共存的環境下,使用者在一處登入 就不用在其他系統中登入,也就是使用者的一次登入就可以得到其他所有系統的信任。要點 儲存信任 驗證信任 最簡單實現sso的方法就是cookie,實現流程 然而cookie有如下缺點 1 cookie不安全 2 ...

sso單點登入

一 什麼是單點登入sso single sign on sso是一種統一認證和授權機制,指訪問同一伺服器不同應用中的受保護資源的同一使用者,只需要登入一次,即通過乙個應用中的安全驗證後,再訪問其他應用中的受保護資源時,不再需要重新登入驗證。二 單點登入解決了什麼問題 解決了使用者只需要登入一次就可以...

sso單點登入

1 sso single sign on 單點登入 解決了使用者只需要登入一次就可以訪問所有相互信任的應用系統,而不用重複登入,對使用者資訊進行統一管理。2 session共享 分布式中,為了提公升集群效能,我把使用者的session資訊儲存到redis中,key的格式例如 user session...