最近在項目群里看到大神們討論到了一個SSO的技術點,感興趣就查了一下。下面就帶大家初識一下這個蠻高大上的技術點。
SSO (single sign on) ——單點登錄
?? .首先介紹一下什么是單點登錄。
? 拿我們最熟悉的騰訊來說,眾所周知,騰訊出品的應用有很多,QQ,騰訊微博,騰訊新聞,騰訊游戲等,我們要使用這些應用的話,一般來說是每個應用都要注冊登錄的,如果你還不想每個應用都使用同一套密碼同時你又記不住密碼的話,那就很崩潰了。如果這些應用能一次性注冊登錄并退出多好。O(∩_∩)O。我們的豬腳該出場了,sso輕松解決這些問題。
?sso是一種統一認證和授權機制,在一個多系統共存的環境下,用戶在一處登錄后,就不用在其他系統中登錄,也就是用戶的一次登錄能得到其他所有系統的信任。
??.了解一下單點登錄的優缺點:
?優點:
1.提高用戶的效率。
用戶不再被多次登錄困擾,也不需要記住多個 ID 和密碼。另外,用戶忘記密碼并求助于支持人員的情況也會減少。
2.提高開發人員的效率。
SSO 為開發人員提供了一個通用的身份驗證框架。實際上,如果 SSO 機制是獨立的,那么開發人員就完全不需要為身份驗證操心。他們可以假設,只要對應用程序的請求附帶一個用戶名,身份驗證就已經完成了。
3.簡化管理。
如果應用程序加入了單點登錄協議,管理用戶帳號的負擔就會減輕。簡化的程度取決于應用程序,因為 SSO 只處理身份驗證。所以,應用程序可能仍然需要設置用戶的屬性(比如訪問特權)。
?缺點:
1.不利于重構
因為涉及到的系統很多,要重構必須要兼容所有的系統,可能很耗時。
2.無人看守桌面
因為只需要登錄一次,所有的授權的應用系統都可以訪問,可能導致一些很重要的信息泄露。
??.技術實現機制
1.當用戶第一次訪問應用系統的時候,因為還沒有登錄,會被引導到認證系統中進行登錄;
2.根據用戶提供的登錄信息,認證系統進行身份校驗,如果通過校驗,應該返回給用戶一個認證的憑據--ticket;
3.用戶再訪問別的應用的時候,就會將這個ticket帶上,作為自己認證的憑據,應用系統接受到請求之后會把ticket送到認證系統進行校驗,檢查ticket的合法性。如果通過校驗,用戶就可以在不用再次登錄的情況下訪問應用系統2和應用系統3了。
?要實現SSO,需要以下主要的功能:
1.所有應用系統共享一個身份認證系統。
統一的認證系統是SSO的前提之一。認證系統的主要功能是將用戶的登錄信息和用戶信息庫相比較,對用戶進行登錄認證;認證成功后,認證系統應該生成統一的認證標志(ticket),返還給用戶。另外,認證系統還應該對ticket進行效驗,判斷其有效性。
2.所有應用系統能夠識別和提取ticket信息
要實現SSO的功能,讓用戶只登錄一次,就必須讓應用系統能夠識別已經登錄過的用戶。應用系統應該能對ticket進行識別和提取,通過與認證系統的通訊,能自動判斷當前用戶是否登錄過,從而完成單點登錄的功能。
第一次接觸這個SSO,覺得是個比較方便的技術點。可能現在已經發展的很成熟了。等我回頭再學學再來叨叨??????