單點登陸

1、SSO,單點登陸(single sign on),是指在多系統應用羣中登陸一個系統,即可在其餘全部系統中獲得受權而無需再次登陸,包括單點登陸和單點註銷。java

 

2、單點登陸需求:多套系統可以識別同一用戶身份,並實時同步用戶信息以使各個系統進行相應的權限控制。通常單點登陸實現一個系統登陸,其餘系統便可登陸;一個系統註銷,其餘系統也會註銷;一個系統登陸信息過時,其餘系統的登陸信息也會過時。跨域

 

3、實際應用中,單點登陸的最佳環境是安全

       用戶在多套系統只有一個用戶名和密碼,即多套系統共享這一套用戶名和密碼,以及各應用系統採用的技術架構相同,域名後綴相同。服務器

       單點登陸的最壞的環境是架構

       用戶在多套系統有各自的用戶名和密碼,每一個系統都各自存儲了各自的用戶信息,且每套系統採用的技術架構不一樣,域名後綴也不一樣。iphone

 

4、SSO的兩種架構與三種實現技術性能

      從應用架構層面,SSO主要能夠分爲集中驗證模式和多點驗證模式。加密

      集中驗證模式:當應用系統須要登陸時,統一交由驗證服務器完成功能登陸動做,應用系統不提供登陸接入(登陸界面)。spa

      相對於多點驗證模式來講,集中驗證模式的適用範圍更廣,並且在SSO服務器中使用的是統一的用戶名密碼,用戶無需關注登陸的是哪套系統的帳號,因此用戶體驗更加優秀。因爲全部的登陸都放在了統一的服務器,因此當集中驗證服務器宕機時,.net

全部系統沒法正常登陸,或丟失SSO的功能,建議以獨立服務器做爲集中驗證服務器,並須要保證登陸服務器的穩定性。

      多點驗證模式:應用系統供各自的登陸界面,登陸了一套系統後,另外其餘系統無需再次登陸便可經過身份驗證。

      在多點驗證模式的模式下,全部的登陸操做都在應用系統完成,任何一套系統宕機不會對其它系統產生影響,也不會影響正常運行系統間的SSO。但若各套系統的帳號不同的時候,若要用戶區分每套系統的用戶密碼,一定會下降用戶的體驗,

爲了解決該問題,多點登陸模式最好有統一的用戶密碼驗證的服務(如LDAP身份驗證)。另外,多點登陸模式相對集中驗證模式來講會存在更多的技術限制。

 

      從SSO技術實現的角度,SSO的實現一般有一下三種技術實現途徑:代理登陸(agent)、令牌環(token),身份票據(ticket)。

      代理登陸(agent):代理登陸的原理就是在IE端經過表單提交的方式模擬應用系統的登陸操做,實現SSO。

      代理登陸的優勢就是無需對原有系統作任何改造,適用於沒法改造的舊系統;

      其缺點很明顯:

    一、穩定性差,一旦登陸期間某臺服務器沒法響應,則該服務器沒法單點登陸。

    二、安全性差,用戶名密碼經過明文傳輸。

    三、因爲登陸期間須要監控各個系統的響應,因此不建議大量使用,不然會影響登陸的性能。

    四、因爲IE的安全限制,代理登陸必須在同域的狀況下運行。

      令牌環(token:經過Cookie共享令牌環的方式傳遞當前用戶信息,實現SSO。

      令牌環的方式最大好處在於無需統一的驗證服務器,是「多點驗證模式」的主力實現技術,各個服務器都經過統一的密鑰對令牌進行加密解密,因此該方式具備安全性高、穩定性好、性能消耗低等優勢;其缺點就是必須保證各臺應用服務器同域

      身份票據(ticket:與令牌環不同,身份票據是經過URL的方式傳遞,經過「兩次握手」的方式,實現SSO。(如開源的CAS就是這種原理)

      身份票據的方式,是適用範圍最廣的一種SSO實現方式,能夠解決跨域等問題,安全性高、穩定性好;其缺點就是必須增長一臺驗證服務器,保證在高壓下驗證服務器的穩定運行,性能方面因爲每次登陸都須要訪問驗證服務器,因此比令牌環的方式略差一點。

    

      三種技術實現途徑的比較

     

比較項

代理登陸

令牌環

身份票據

需求實現程度

沒法實現同時切換用戶與會話同時過時

所有

所有

對原系統改造

小量改造

小量改造

安全性

穩定性

偏低

性能開銷

登陸瞬間壓力大一點

很是小

較小

適用範圍

同域,對用戶密碼不一致的系統,需在登陸服務器的用戶憑證庫保存用戶密碼映射

同域,對不一樣登陸名需增長對用戶憑證庫的訪問

全部可改造的系統,對不一樣登陸名需在登陸服務器的用戶憑證庫保存用戶映射

獨立驗證服務器

須要

不須要

須要

登陸模式支持

集中驗證模式

集中驗證模式/多點驗證模式

集中驗證模式

    本人小白,在對接過程當中遇到單點登陸問題,查找網上資料記錄一下。

    token實現思路:

    一、用戶登陸校驗,校驗成功後就返回Token給客戶端。

    二、客戶端收到數據後保存在客戶端。

    三、客戶端每次訪問API是攜帶Token到服務器端。

    四、服務器端採用filter過濾器校驗,校驗成功則返回請求數據,校驗失敗則返回錯誤碼

    ticket實現思路:

    一、訪問服務:sso客戶端發送請求訪問應用程序提供的服務資源。

    二、定向認證:sso客戶端會重定向用戶請求到sso服務器。

    三、用戶認證:進行用戶身份認證。

    四、發放票據:sso服務器會產生一個隨機的ServiceTicket。

    五、驗證票據:sso服務器驗證票據ServiceTicket的合法性,驗證經過後,容許客戶端訪問服務。

    六、傳輸用戶信息:sso服務器驗證票據經過後,傳輸用戶認證結果信息給客戶端。

    詳細CAS實現單點登錄原理請參考 http://blog.csdn.net/javaloveiphone/article/details/52439613,我以爲講的很詳細。

相關文章
相關標籤/搜索