.Net 單點登入(SSO)的原理與實現------單點登入是什麼鬼
.Net 單點登入(SSO)的原理與實現——單點登入是什麼鬼
一、什麼是單點登入
在一些公司中,可能需要按照公司業務將系統拆分,例如騰訊的產品有騰訊視訊、QQ郵箱、QQ空間等;百度有百度貼吧,百度知道;阿里有淘寶、天貓….我們常常是登入了淘寶就可以直接進天貓,退出登入後天貓和淘寶也都退出登入了。所以,單點登入簡單來說就是:
一處登入、處處登入,一處登出、處處登出!
二、單點登入的使用場景
上面我有提到,單點登入是一處登入,處處登入,一處登出,處處登出,因此單點登入適用於多系統之間共享使用者資訊,共享使用者的身份認證資訊場景。如果多系統之間的使用者資訊不是一致的,那麼單點登入則不適用!
三、先不談單點登入
我們先不談單點登入,我們來談談一般的登入。對於一般的登入,無非就是想進入一個系統得登入一下,在登入介面輸入使用者名稱或郵箱手機號之類的,再輸入密碼,如果登入失敗則提示失敗,如果成功則進入系統。因此流程如下:
那麼,我們進行一下思考:登入是什麼?
在我看來,登入就是一個驗證(廢話),你給我一個憑據,我驗證你能不能“看一些東西,做一些事”!
對於獨立系統,每個系統都有各自的驗證,各自驗證各自的憑據,驗證完“看一些東西,做一些事”!
四、使用者驗證與登入認證
既然各自的系統都有各自的驗證,如果這些系統都共享一個驗證邏輯,不就可以單點登入了嗎?事實證明,我們想的太簡單了!
是的,驗證邏輯是必須要相同的,假設A系統使用使用者名稱123密碼123可以登入,那麼B系統用這個使用者名稱密碼也一定要可以登入。但這僅僅是驗證
- 同步驗證
- 同步認證
- 同步登出
第一個問題好解決,我們只需要使用相同的驗證邏輯就行,第二和第三個問題正是單點登入要解決的核心之所在!
五、單點登入是一種架構,與語言無關
到目前為止,我們還沒有提到程式語言,實際上,只要解決了上面我說的三大問題,就可以實現最基本的單點登入,因此單點登入是一種解決這三大問題的架構,任何程式語言都可以實現這種架構,因此它與語言無關!但是為什麼這篇部落格的標題是“.Net 單點登入(SSO)的原理和實現呢”?原因有二:
- 因為博主是一個.Net開發者,故以.Net為例子,深入淺出講解單點登入原理以及用.Net技術的實現
- 在現在的網路資源裡,單點登入框架和解決方案有很多,但大部分都不是基於.Net技術來實現的,因此需要一個基於.Net單點登入解決方案