什么是單點登錄?


什么是單點登錄?

   因為講了Cookie,講了Session,這里我覺得有必要說一下單點登錄。我們先來看一下什么是單點登錄:單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。
   舉例:上豆瓣,要登錄豆瓣FM、豆瓣讀書、豆瓣電影、豆瓣日記,如果我們訪問豆瓣讀書、豆瓣電影、豆瓣日記都需要進行一次登錄認證,那么用戶體驗是非常不好的。所以引用了單點登錄。只要一次登錄就可以訪問所有相互信任的應用系統。

 

單點登錄的實現方式?

 

                     上圖實現的是如何使用cookie進行單點登錄

   客戶端持有ID,服務端持有session,兩者一起用來保持登錄狀態。客戶端需要用ID來作為憑證,而服務端需要用session來驗證ID的有效性。但是session這東西一開始是每個server自己獨有的,豆瓣FM有自己的session、豆瓣讀書有自己的session,而記錄ID的cookie又是不能跨域的。所以,我們要實現一次登錄一次退出,只需要想辦法讓各個server的共用一個session的信息,讓客戶端在各個域名下都能持有這個ID就好了。再進一步講,只要各個server拿到同一個ID,都能有辦法檢驗出ID的有效性、並且能得到ID對應的用戶信息就行了,也就是能檢驗ID。

實現方法

server端

server群如何生成、驗證ID的方式大致分為兩種:
   1、“共享Cookie”這個就是上面提到的共享session的方式,本質上cookie只是存儲session-id的介質,session-id也可以放在每一次請求的url里。session這項機制一開始就是一個server一個session的,把session拿出來讓所有server共享有點奇怪。
   2、SSO-Token方式。因為共享session的方式不安全,所以我們不再以session-id作為身份的標識。我們另外生成一種標識,把它取名SSO-Token(或Ticket),這種標識是整個server群唯一的,並且所有server群都能驗證這個token,同時能拿到token背后代表的用戶的信息。

瀏覽器端


   用最早的“共享session”的方式還是現在的“token”方式,身份標識到了瀏覽器端都要面臨這樣的一個問題:用戶登錄成功拿到token(或者是session-id)后怎么讓瀏覽器存儲和分享到其它域名下?同域名很簡單,我們可以把token存在cookie里,把cookie的路徑設置成頂級域名下,這樣所有子域都能讀取cookie中的token。這就是共享cookie的方式。

技術實現機制

 

 

   當用戶第一次訪問應用系統的時候,因為還沒有登錄,會被引導到認證系統中進行登錄;根據用戶提供的登錄信息,認證系統進行身份校驗,如果通過校驗,應該返回給用戶一個認證的憑據--ticket(SSO-Token);用戶再訪問別的應用的時候,就會將這個ticket(SSO-Token)帶上,作為自己認證的憑據,應用系統接受到請求之后會把ticket送到認證系統進行校驗,檢查ticket的合法性。如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統2和應用系統3了。
要實現SSO,需要以下主要的功能:
   1、所有應用系統共享一個身份認證系統。統一的認證系統是SSO的前提之一。認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統應該生成統一的認證標志(ticket),返還給用戶。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
   2、所有應用系統能夠識別和提取ticket(SSO-Token)信息   要實現SSO的功能,讓用戶只登錄一次,就必須讓應用系統能夠識別已經登錄過的用戶。應用系統應該能對ticket(SSO-Token)進行識別和提取,通過與認證系統的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。

 

單點登錄的優缺點?

優點

   1、提高用戶的效率。 用戶不再被多次登錄困擾,也不需要記住多個 ID 和密碼。另外,用戶忘記密碼並求助於支持人員的情況也會減少。
   2、提高開發人員的效率。 SSO 為開發人員提供了一個通用的身份驗證框架。實際上,如果 SSO 機制是獨立的,那么開發人員就完全不需要為身份驗證操心。他們可以假設,只要對應用程序的請求附帶一個用戶名,身份驗證就已經完成了。
   3、簡化管理。 如果應用程序加入了單點登錄協議,管理用戶帳號的負擔就會減輕。簡化的程度取決於應用程序,因為 SSO 只處理身份驗證。所以,應用程序可能仍然需要設置用戶的屬性(比如訪問特權)。

缺點

   1、不利於重構 因為涉及到的系統很多,要重構必須要兼容所有的系統,可能很耗時。
   2、無人看守桌面 因為只需要登錄一次,所有的授權的應用系統都可以訪問,可能導致一些很重要的信息泄露。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM