多站點單點登入 SSO 設計

2022-03-16 08:36:47 字數 1026 閱讀 9701

為什麼需要單點登入:

產品剛上線時,一般由於使用者量少,所有的功能都放在一起,一般也不需要具體的單點登入。隨著使用者量和業務發展的需要,要求逐步將產品按功能或效能分為相應獨立的站點,並分開部署,這就需要在各個站點之間進行單點登入,以達到使用者一次登入,就可以使用多個站點。

單點登入的實現:

簡單方法: 在同乙個域內的站點,可以簡單的通過共享cookie(將登入使用者名稱存放cookie中)來實現單點登入。這種方法實現簡單,安全性方法可以通過將cookie值加密方式加強,但對不同域下及不同開發語言下(如a站點c#,b站點c)實現麻煩。

1、使用者登入認證(認證使用者名稱和密碼),如果成功,返回表示本次登入的登入token

2、登入token認證(認證token是否正確),如果成功,返回當前登入的使用者名稱

3、延長token有效期

4、退出(使token失效)

認證中心獨立於各個站點,單點流程一般場景如下:

1、使用者在站點a輸入使用者名稱和密碼點選登入

2、站點a將使用者名稱和密碼**給認證中心進行認證,認證中心返回token

3、站點a將當前登入使用者和token存入session(或cookie)

4、在站點a上點選連線訪問站點b,通過url引數方式,將token帶給站點b

5、站點b將token轉交到認證中心,認證正確,返回當前使用者名稱。

6、站點b將當前登入使用者和token存入session(或cookie),完成登入流程

這樣的設計下的token,還可以用在非同步使用ajax去訪問伺服器端的介面(介面可能獨立部署在不同的站點下),這樣只需要帶上token,伺服器端的介面認證token通過後,直接返回這個登入使用者的相應使用者資訊。

安全性考慮:

1、使用者登入認證介面,可增加認證頻率、認證ip等限制,防止暴力攻擊

2、token其實就是一串表示本次登入的唯一字串,可以生成字串時,增加摘要資訊。如token的組成為:a+md5(a+pwd)

的方式,a為隨機生成的guid,這樣在驗證token時,就可以直接通過演算法來驗證合法性,只有演算法驗證通過後,再進行下一步的操作。

多站點單點登入實現設計方案

有這麼個場景,公司下有多個不同網域名稱的站點,我們期望使用者在任意乙個站點下登入後,在開啟另外幾個站點時,也是已經登入的狀態,這麼一過程就是單點登入。因為多個站點都是用的同一套使用者體系,所以單點登入可以免去使用者重複登入,讓使用者在站點切換的時候更加流暢,甚至是無感知。單點登入所要實現的就是,某一...

SSO單點登入

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

sso單點登入

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