單點登錄最全詳解(圖文全面總結)
單點登錄
單點登錄全程是Single Sign On,簡稱 ”SSO“,是一種認證機制,通過一次性驗證用戶身份,提供對多個系統的訪問。
圖片
舉一個例子,比如:阿里集團有多個網站,比如:淘寶、天貓........等等,如下圖所示:
圖片
單點登錄,就在淘寶、天貓、聚劃算...等的最外面,也就是說用戶登錄任何一個系統,剩余系統都可以登錄。
也就說:只需一次登錄便,可訪問所有這些系統,而無需在每個系統中重復登錄。
所以,單點登錄(SSO), 極大地簡化了用戶的認證過程,提升了用戶體驗。
而且,通過統一的身份認證,可以更好地控制、和審計用戶的訪問行為,減少密碼泄露的風險。
單點登錄實現原理
從上面知道了單點登錄的價值,下面如果是你,你應該怎么來"實現單點登錄呢"?
單點登錄實現,如下圖所示:
圖片
單點登錄通常通過,以下步驟來實現:
Step 1: 用戶訪問應用A
比如:用戶嘗試訪問系統、或應用 A。
比如:用戶試圖訪問受保護資源,(例如:https://app.mikechen.cc/dashboard),該資源要求用戶進行身份驗證。
Step 2: 重定向到認證服務器
應用 A 檢查用戶是否已登錄,如果沒有登錄,應用 A 會將用戶重定向到, SSO 認證服務器。
比如:CAS客戶端,會將用戶的瀏覽器重定向到CAS服務器的登錄URL。
比如:https://cas.mikechen.cc/login?service=https://app.mikechen.cc/dashboard。
如下圖所示:
圖片
然后,用戶認證
CAS服務器接受用戶的登錄請求,驗證用戶的身份信息(如:用戶名、和密碼)。
如果驗證成功,”SSO 服務器“,生成一個用于標識該用戶的令牌(Token)。
然后,分發令牌
如果,認證成功后,SSO 服務器會將令牌返回給應用 A。
比如:CAS服務器,會生成一個Service Ticket(ST),這是一個一次性使用的票據,用于CAS客戶端向CAS服務器驗證用戶身份。
應用 A 接收到令牌后,創建會話并允許用戶訪問資源。
最后,用戶在多個系統間切換
這個時候,當用戶嘗試訪問系統、或應用 B 時,應用 B 會向 SSO 服務器驗證用戶身份。
如果用戶已經在 SSO 服務器登錄,SSO 服務器會直接返回有效的令牌,無需再次輸入憑證。
最后,用戶在 SSO 系統內的多個應用之間切換時,只需要一次登錄,后續訪問都會自動通過。
單點登錄實現挑戰
單點故障
認證中心成為關鍵點,如果它出現問題,所有系統的認證流程都會受影響。
比如:在SSO系統中,認證中心(如CAS服務器)是所有用戶認證的關鍵組件。
如果認證中心出現故障,所有依賴它的應用系統將無法完成用戶認證,導致系統的訪問中斷。
比如:可以通過負載均衡器,將用戶請求分發到多個CAS服務器實例。
這樣,即使一個CAS服務器出現故障,負載均衡器可以將請求轉發到其他健康的服務器。
復雜性
實現和維護SSO系統比普通認證系統復雜,涉及的協議和安全性要求較高。
比如:實現和維護SSO系統比普通的認證系統復雜,涉及多個協議和安全性要求、
例如:CAS、OAuth2.0、SAML...等,每種協議有其獨特的配置要求和實現細節,增加了系統的復雜性。
跨域問題
不同域名之間的SSO需要處理跨域通信問題,比如:通過CORS設置、或使用OAuth的授權碼模式。
單點登錄應用
單點登錄適用于多種場景,常見的應用場景包括:
企業內部系統
企業通常擁有多個業務系統,如:人力資源系統、財務系統、郵件系統...等。
通過 SSO,員工可以通過一次登錄訪問所有這些系統,提高工作效率。
在線服務平臺
互聯網公司往往提供多個在線服務,如:郵件、云存儲、社交網絡...等。
通過 SSO,用戶只需一次登錄即可訪問所有服務,提供無縫體驗。
電子商務系統
比如:上面我提到的,阿里包含:淘寶、天貓...等等系統,通過 SSO,用戶可以通過一個賬號訪問所有這些服務。
總之,單點登錄(SSO)是一種解決多系統認證問題的有效機制,通過一次登錄讓用戶無縫訪問多個系統。
單點登錄(SSO)的核心在于:集中式的認證服務器(如 :CAS Server)管理用戶身份,并通過票據機制在不同應用之間共享認證信息。