SSO單點登入的幾種方式

2021-10-01 13:24:48 字數 1252 閱讀 5446

這裡是引用

單點登入sso(single sign on)說得簡單點就是在乙個多系統共存的環境下,使用者在一處登入後,就不用在其他系統中登入,也就是使用者的一次登入能得到其他所有系統的信任。單點登入在大型**裡使用得非常頻繁,例如像阿里巴巴這樣的**,在**的背後是成百上千的子系統,使用者一次操作或交易可能涉及到幾十個子系統的協作,如果每個子系統都需要使用者認證,不僅使用者會瘋掉,各子系統也會為這種重複認證授權的邏輯搞瘋掉。實現單點登入說到底就是要解決如何產生和儲存那個信任,再就是其他系統如何驗證這個信任的有效性,因此要點也就以下兩個:

最簡單的單點登入實現方式,是使用cookie作為媒介,存放使用者憑證。

使用者登入父應用之後,應用返回乙個加密的cookie,當使用者訪問子應用的時候,攜帶上這個cookie,授權應用解密cookie並進行校驗,校驗通過則登入當前使用者

不難發現以上方式把信任儲存在客戶端的cookie中,這種方式很容易令人質疑

對於跨域問題,可以使用jsonp實現。

使用者在父應用中登入後,跟session匹配的cookie會存到客戶端中,當使用者需要登入子應用的時候,授權應用訪問父應用提供的jsonp介面,並在請求中帶上父應用網域名稱下的cookie,父應用接收到請求,驗證使用者的登入狀態,返回加密的資訊,子應用通過解析返回來的加密資訊來驗證使用者,如果通過驗證則登入使用者。

這種方式雖然能解決跨域問題,但是安全性其實跟把信任儲存到cookie是差不多的。如果一旦加密演算法洩露了,攻擊者可以在本地建立乙個實現了登入介面的假冒父應用,通過繫結host來把子應用發起的請求指向本地的假冒父應用,並作出回應。

因為攻擊者完全可以按照加密演算法來偽造響應請求,子應用接收到這個響應之後一樣可以通過驗證,並且登入特定使用者

這種方式是通過父應用和子應用來回重定向中進行通訊,實現資訊的安全傳遞。

父應用提供乙個get方式的登入介面,使用者通過子應用重定向連線的方式訪問這個介面,如果使用者還沒有登入,則返回乙個的登入頁面,使用者輸入賬號密碼進行登入。如果使用者已經登入了,則生成加密的token,並且重定向到子應用提供的驗證token的介面,通過解密和校驗之後,子應用登入當前使用者。

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...