1. 程式人生 > >單點登入實現的幾種方式

單點登入實現的幾種方式

單點登入   SSO  )的技術被越來越廣泛地運用到各個領域的軟體系統當中。本文從業務的角度分析了 單點登入  的需求和應用領域;從技術本身的角度分析了 單點登入  技術的內部機制和實現手段,並且給出Web- SSO  和桌面 SSO  的實現、原始碼和詳細講解;還從安全和效能的角度對現有的實現技術進行進一步分析,指出相應的風險和需要改進的方面。本文除了從多個方面和角度給出了對 單點登入   SSO  )的全面分析,還並且討論瞭如何將現有的應用和 SSO  服務結合起來,能夠幫助應用架構師和系統分析人員從本質上認識 單點登入  ,從而更好地設計出符合需要的安全架構。

單點登入是什麼?

單點登入

 (Single Sign On),簡稱為  SSO  ,是目前比較流行的企業業務整合的解決方案之一。SSO 的定義是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。所以你會看到很多域名直接是sso.domain.com,也就是用來做單點登入 的。

如上圖,一個使用者請求N個系統,給使用者的感覺是一個系統的感覺,而不要重複登入。

單點登入 是一個概念性東西,既然是概念,那麼就有很多實現方式。

實現方案

根據不同的業務場景來不同的實現方式。下面來羅列一下對應的場景以及實現單點登入 的方式。

一、方案一。

        域名:a.sojson.com 、b.sojson.com、c.sojson.com、n.sojson.com

        描述:N個系統,但是 一級域名  是一致的。如果不懂 一級域名   二級域名  是什麼意思先檢視這篇部落格。《單個專案多個二級域名簡單實現思路》。這個案例實現相對簡單,如下圖:

PS:這個方案比較簡單,只要提供公共的 SDK  即可,不需要第三個系統的出現,這個 SDK  的工作需要管理 Cookie  和使用者資訊。

原理:其實質這裡就是利用了 二級域名   一級域名   Cookie  

優點:輕量級、可插拔、效率非常高。

缺點:侷限性限於一級域名是一樣的。

二、方案二

域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

描述:域名比較亂,有同一個一級域名的(www.sojson.com、a.sojson.com),也有不同域名的。

這個稍微複雜一點,如下圖:

原理:通過SSO 系統(登入、退出), Iframe  引用的方式引入Cookie.domain.com的方式,利用 Javascript  操作(寫入 / 刪除 / 修改)  cookie  ,而這個cookie.domain.com 域名是放入 CDN  上 ,獲取使用者資訊當前系統直接通過 Redis  (只讀)獲取。

優點:因為是採用壓力分化,Cookie.domain.com  部署在CDN上,這樣的話,對各個系統造成的壓力是 0 ,用第三方系統(SSO)維護,許可權更大,操作性更強,但又Cookie 資訊在當前域名的一級域下,獲取簡單,大量減少對 sso 的訪問量。

缺點:如果瀏覽器安全性過高,Iframe 的方式操作 Cookie 將會失敗。比如IE瀏覽器,目前正在攻克IE瀏覽器。

三、方案三

域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

描述:域名比較亂,有同一個一級域名的(www.sojson.com、a.sojson.com),也有不同域名的。

(條件和方案二一樣),實現思路如下圖:

原理:所有的請求(登入、退出、獲取使用者資訊、當前使用者狀態)都請求sso 系統,sso 系統維護使用者資訊, Session  UserInfo

優點:實現較為簡單。

缺點SSO 壓力非常大。

四、方案四

域名www.sojson.com、a.sojson.com、www.itboy.net、www.wenyiba.com

描述:域名比較亂,有同一個一級域名的(www.sojson.com、a.sojson.com),也有不同域名的。

(條件和方案二一樣),實現採用 CAS  方式,這裡就不做介紹了,資料非常多。

原理:和方案三類似。

優點:現成的,資料較多。

缺點:繁重、靈活性差。