企業級應用建設——SSO單點登錄

2 評論 14807 瀏覽 113 收藏 9 分鐘

本文介紹了SSO單點登錄的概念和實踐方式,以及單點登錄的應用意義。

“新基建”概念在2020年特別的火,羅振宇“時間的朋友”2020跨年演講中也提到了“新基礎設施”。19年天貓雙十一美妝品牌銷量第一名——“完美日記”,借助“新基礎設施”在短短兩年時間,就達到甚至超越了傳統企業很多年深耕了多年的市場水平。而建設一個企業級應用時,亦可借助一些通用的“基礎設施”提供的能力,快速、高效地搭建應用,SSO單點登錄就是其中一項非常常見的通用能力。

引言

在原來軟件開發模式下,任何一個模塊都是我們程序猿大哥一行一行代碼寫出來的?,F如今很多現成的功能,通過服務的形式提供給我們,拿來即用。

  • 云計算基礎服務——服務器、網絡、數據庫等等;
  • 中間件——消息隊列MQ、Redis、日志服務、應用配置管理ACM等等;
  • 前、后端開發框架——VUE、Spring Cloud;
  • 短信服務——短信運營商、各大云服務商的短信服務;
  • 數據埋點——埋點服務提供商;
  • 消息推送——友盟、極光推送;

在企業級應用中也有很多集成的功能產品,SSO單點登錄、工作流引擎、表單引擎等等不勝枚舉。類似于使用Axure畫原型的時候,設計一套符合產品前端組件的元件庫(比如我們常用的就是Element-ui),不用每次都用基礎的組件制作原型圖,比如需要一個穿梭框,直接拖過來稍作調整即可。

簡介

單點登錄(Single Sign On),簡稱為 SSO,是比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。

  1. 企業開始進行信息化建設,搭建了一套業務系統A。通過用戶名密碼就可以登錄。
  2. 隨著業務的發展,又搭建了業務系統B、業務系統C、業務系統D……,每套系統都需要登錄、輸入各自的用戶名密碼,記憶成本高。
  3. 通過打通數據層,共用底層用戶數據,統一不同業務系統的鑒權機制,實現了登錄所有系統用一套用戶名密碼即可。但是每套系統都得登錄一遍,操作起來還是麻煩,可以不可以只登錄一次就行了?
  4. SSO單點登錄應運而生,所有新技術的變革都是解決某項用戶需求痛點。

實踐

先通過一個栗子描述一下單點登錄實現的方式:

員工小明拿著公司的一卡通,可以進公司大門,可以當飯卡刷,可以公司內便利店買東西。

  1. 小明進公司大門,看門大爺問小明要公司的一卡通,小明沒有一卡通,查了查電話本,找到了行政部門的電話;
  2. 看門大爺把行政部門電話給了小明;
  3. 小明給行政部門電話打了過去;
  4. 行政部門接了電話;
  5. 小明報上了自己的大名,手機號,哪個部門等等信息;
  6. 行政小姐姐去系統里面查了查,還真有小明這個人,于是就給了小明一個一卡通;
  7. 然后小明又拿著這個一卡通給老大爺一看;
  8. 老大爺還得再次確認一下這個一卡通是不是真的,老大爺又去跟行政確認;
  9. 行政告訴老大爺,這個一卡通確實有效;
  10. 老大爺把小明放進去了;

小明直到今天下班都拿著一卡通,去吃飯刷一卡通,去便利店拿著一卡通,通過一卡通確認小明的身份。直到下了班,把一卡通還給了公司。

剛才這個例子簡單描述了目前實現單點登錄比較流程的一個框架——CAS。

下面我們把實現邏輯還原一下。

  1. 【客戶端】發起請求,訪問www.123.com,經過一個過濾器(CAS提供),判斷用戶是否登錄過。如果沒登錄重定向到【認證中心】;
  2. 【認證中心】給【客戶端】返回了重定向地址:www.cas.123.com;
  3. 【客戶端】重定向到www.cas.123.com;
  4. 【認證中心】返回了登錄頁面;
  5. 用戶輸入用戶名、密碼;
  6. 【認證中心】驗證用戶名、密碼真實性。真實有效后,提供了一個ticket;
  7. 【客戶端】又拿著ticket去www.123.com請求;
  8. 【服務端】拿著剛才用戶提供過來的ticket去認證中心驗證真實性;
  9. 【認證中心】確認ticket真實有效;
  10. 【服務端】返回相關資源,【客戶端】展示相關資源。

當用戶在訪問其他業務系統時候,其他業務系統都會去【認證中心】驗證用戶攜帶的這個ticket,認證通過后即可直接訪問其他業務系統,無需再次登錄。

從實現方式上還其他協議可以實現單點登錄目的:

  • SAML安全斷言標記語言(Security Assertion Markup Language);
  • OAuth(開放授權)是一個開放標準,允許用戶讓第三方應用訪問該用戶在某一網站上存儲的私密的資源(如照片,視頻,聯系人列表),而無需將用戶名和密碼提供給第三方應用。
  • OIDC是OpenID Connect的簡稱,它在OAuth2上構建了一個身份層,是一個基于OAuth2協議的身份認證標準協議;

也有一些已商業化的解決方案:Oracle OAM、阿里云IDaaS等。

具體采用何種解決方案,看要看業務的具體需求。而且不同解決方案各有優略,在此不再贅述。

意義

我們了解到單點登錄解決了用戶端交互體驗的訴求,其實它的好處遠不止于此。

數據應用方面意義

  • 針對用戶來說,減少了繁瑣的操作,優化了用戶體驗;
  • 針對企業來說,通過單點登錄統一用戶數據,推動私域流量的搭建,同時是構建企業數據中臺的基石。

不論是企業內部的業務系統,還是面向各行業C端用戶的產品也都在進行單點登錄建設。

產品研發方面意義

  • 統一性——統一底層數據結構;
  • 拓展性——利于外部系統對接;
  • 安全性——自己保障高可用同時,通過統一鑒權機制,進一步保障數據安全;
  • 高效性——提高產品開發效率,不用重復造輪子;大型業務系統背后,用戶一次操作可能需要很多業務系統協作,通過統一的鑒權機制提升整體性能效率;

 

作者:天氣不錯,公眾號:天氣的朋友(friends_of_tianqi)

本文由@天氣不錯 原創發布于人人都是產品經理,未經許可,禁止轉載。

題圖來自Unsplash, 基于CC0協議。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 反復看

    來自北京 回復
  2. 學習收藏了,今天就當一回課代表吧。搭建私域流量運營,當然必須要有工具。給大家推薦一款由【人人都是產品經理】【起點課堂】旗下獨立研發的私域流量運營工具——糧倉·企微管家。糧倉·企微管家是一款基于企業微信的一款營銷型SCRM系統。集裂變獲客、留存促活、銷售變現、客戶管理于一體的私域增長閉環系統。覆蓋企業客戶運營的生命周期,助力企業私域流量運營,提升售前/售后服務能力。還可以免費開始使用哦~ http://996.pm/M0A06

    來自廣東 回復
  3. 來自浙江 回復