sso單點登入

2021-07-25 20:14:57 字數 1613 閱讀 7030

一、什麼是單點登入sso(single sign-on)

sso是一種統一認證和授權機制,指訪問同一伺服器不同應用中的受保護資源的同一使用者,只需要登入一次,即通過乙個應用中的安全驗證後,再訪問其他應用中的受保護資源時,不再需要重新登入驗證。

二、單點登入解決了什麼問題

解決了使用者只需要登入一次就可以訪問所有相互信任的應用系統,而不用重複登入。

三、在網上看過不少的sso實現方法。總結在實際專案開發中的一些開發體會。先看下面的流程圖:

一.使用者第一次訪問站點。

1. 使用者第一次訪問》www.a.com ,這個時候該站點下沒有記錄之前登入的cookie,

2. 所有在發現沒有使用者登入的情況下》跳轉到了login 頁面。

3. 使用者現在輸入使用者名稱,密碼登入,請求sso登入api,登入成功,在redis裡面快取一條key=sessioid,values=userinfo這樣一條記錄,快取時間可配置。response 返回登入驗證狀態,和使用者資訊。

4. 使用者登入成功,記錄下憑證,即此刻的sessionid寫入cookie.然後跳轉到www.a.com

5. 這個時候有了cookie,將記錄的cookie,也就是sessioid請求sso驗證token介面,因為登入成功記錄了key=sessionid,所有可以獲取到values=即使用者資訊,response 返回使用者資訊。

6. 使用者現在去訪問www.b.com站點,b站點無cookie,這裡sessionid還是當前會話的sessionid,所有區請求sso主站點驗證 token介面,發現存在key=sessionid,返回登入狀態成功,使用者資訊。在b站點下記錄cookie 即token 配置。

這樣使用者第一次訪問a站點,從第一次登入,到訪問其他站點的流程就走完了。

二.使用者中途關閉瀏覽器,然後開啟瀏覽器,訪問b站點:

1. 發現存在cookie, 即token憑證,去sso主站的,驗證發現存在key=sessioid,獲取values將userino返回給使用者,返回使用者任在登入狀態。這樣訪問應用之前訪問過的站點依舊在登入狀態。

2. 如果使用者在執行訪問第二個應用,這時候redis快取的登入狀態過期,則返回驗證憑證失敗。這時候第二個應用跳轉到登入狀態,走使用者登入的流程以及後續驗證流程。

注意記錄cookie的過期時間應該保證與redis的過期時間一致性,不能在redis快取的過期時間之後過期,這樣在使用者此時訪問第乙個應用站 點的時候,發現cookie不存在,就會通過sessionid去驗證憑證,發現這時候是過期後重新登陸,會將此時的登陸狀態寫入cookie.

三.登出

只需要清除本地cookie,呼叫sso站點介面清除登陸快取的狀態即可實現登出。

四.注意:

在實際的專案開發中會遇到各種情況,比如子站點和sso主站點的介面呼叫引數約束,簽名,加密等。以及純html站點的實現sso登入介面,或者 純.net應用**的跳轉介面,這些都要區別開來。只有在詳細了解sso實現單點登入的原理之後進行開發才能做到事半功倍的效果。

工欲善其事必先利其器 。

SSO單點登入

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

sso單點登入

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

SSO單點登入

今天,當我們提起 sso的時候,我們通常是指 web sso 它的主要特點是,sso應用之間走 web協議 如 並且sso 都只有乙個登入入口。簡單的sso 的體系中,會有下面三種角色 1,user 多個 2,web 應用 多個 3,sso 認證中心 1個 雖然sso 實現模式千奇百怪,但萬變不離其...