1. 什麼是單點登錄?
在《百度百科》中是這樣解釋的:
單點登錄(SingleSignOn,SSO),就是通過用戶的一次性鑒别登錄。當用戶在身份認證服務器上登錄一次以後,即可獲得訪問單點登錄系統中其他關聯系統和應用軟件的權限,同時這種實現是不需要管理員對用戶的登錄狀态或其他信息進行修改的,這意味着在多個應用系統中,用戶隻需一次登錄就可以訪問所有相互信任的應用系統。這種方式減少了由登錄産生的時間消耗,輔助了用戶管理,是比較流行的。
企業業務逐漸壯大的過程中,開發了很多的業務系統,每個業務系統都有自己的用戶登錄、注冊模塊,從而導緻一個員工要開展工作就需要在每一個用的業務系統中注冊賬号,每訪問一個系統,就需要使用與之對應的賬号密碼進行登陸。無形中增加了員工的工作成本。
單點登錄就是為了解決這一痛點。通過統一的用戶登錄授權,實現所有不同業務系統之間用戶登錄身份狀态的打通,減少員工使用系統的工作成本,提高工作效率。
2. 單點登錄的實現方式有哪些?單點登錄實現中,系統之間的協議對接是非常重要的一個環節,常見的标準協議類型有:
3. OAuth 2.0 協議
- CAS:Central Authentication Service簡稱CAS,是一種常見的B/S架構的SSO協議。
- OAuth 2.0:關于授權的開放網絡标準。
- OpenID:OpenID 是一個以用戶為中心的數字身份識别框架,它具有開放、分散性。
- SAML:安全斷言标記語言(英語:Security Assertion Markup Language,簡稱SAML,發音sam-el)是一個基于XML的開源标準數據格式,它在當事方之間交換身份驗證和授權數據,尤其是在身份提供者和服務提供者之間交換。
OAuth 是一個關于授權的開放網絡标準,在全世界得到廣泛應用,目前的版本是 2.0。OAuth 1.0 協議當時設計得過于複雜,不便于使用,就沒有推廣起來。而 OAuth 2.0 屬于新設計的協議,和1.0沒有任何的關系,這點需要注意。
OAuth 2.0 解決的主要場景是:第三方應用如何被授權訪問資源服務器。整個流程參與者包括幾個組成部分:
- Resource Owner: 資源擁有者,通常為終端用戶
- Resource Server: 資源提供者
- Authorization Server: 授權服務器
- Client: 請求訪問服務訪問的應用
授權的流程可以簡化為如下:
OAuth 2.0針對不同的業務場景提供了不同的授權模式:
4. 單點登錄的一些常見疑問
- Authorization Code Grant: 授權碼模式,最為常用,最安全,強烈推薦;
- Implicit Grant: 适用于SPA應用,已經不再推薦使用,被PKCE模式所替代;
- Resource Owner Password Credentials Grant: 需要把用戶的用戶名和密碼暴露給Client;
- Client Credential Grant: 整個流程沒有用戶的概念,适用于服務端->服務端調用的場景。
如果業務系統登退了認證中心會退出嗎?
單點登錄就像字面上的意思一樣,隻要一個認證中心登錄了,其他系統就不需要再次輸入用戶名密碼進行登錄。 但是單點登錄不管登出。
單點登錄認證中心頒發的token時間太短怎麼辦?
出于安全考慮,所有系統頒發的token都是有時效性的。
對于 OAuth 2.0 協議的單點登錄,目的是為了解決第三方系統獲取認證中心的用戶資源,即使再短,也夠第三方系統使用token獲取用戶信息了。
業務系統之所以覺得token時間短的原因是把用戶的每一個操作都用 OAuth 2.0 頒發的token去獲取用戶信息,這是技術使用上的錯誤。
舉個例子:如果所有和 QQ對接了OAuth 2.0的系統每次操作都請求QQ服務,第一QQ會将其拉入黑名單,視為攻擊,第二把自己命運的喉嚨交給了别人。
5. 總結每一種技術的出現都是為了解決某一場景的特定問題,很難找到一種可以應對所有場景的技術存在。這也是技術不斷叠代發展的動力。同樣,對于業務來來講,業務的創新也來自于此。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!