SSO單點登入實現原理與總結

2021-07-29 07:26:30 字數 1574 閱讀 2105

**

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

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

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

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

三、在公司裡面也通過.net,進行了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單點登入原理

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

單點登入SSO的實現原理

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

單點登入SSO的實現原理

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