適合中小企業的單點登錄SSO

單點登錄(Single Sign On),簡稱為 SSO,是目前比較流行的企業業務整合的解決方案之一。SSO的定義是在多個應用系統中,用戶只需要登錄一次就可以訪問所有相互信任的應用系統。

工具/原料

visual studio 2008
github

方法/步驟

什麼情況下會用到單點登錄

剛開始框架中也是沒有單點登錄此模塊的,有一次需要在Winform系統中嵌入Web頁面,整合兩個系統。Web頁面的用戶信息驗證一直沒找到什麼好的解決辦法,剛開始的辦法是通過往網頁地址後面自動加上登錄用戶名和密碼,發送到後台進行登錄;這樣也達到了整合的目的,但是總感覺比較彆扭,直接把用戶名和密碼暴露在地址欄肯定存在安全隱患。後來經過一番波折在網上找到類似的解決辦法,利用單點登錄的方案達到了比較好的效果;

除了上面說的Winform系統中嵌入Web頁面這種情況,還有經常在自己公司系統中整合一些合作夥伴的系統,如此打包銷售更有市場競爭力,這樣首要解決的問題也是登錄入口統一;如今行業軟體現狀,不像十年前了只有那麼一兩套系統,講究著用就行了,現在沒有用上十來個系統就不叫信息化了,所以你能提供一個單點登錄的解決方案也是一大賣點;再就是現在的軟體公司不管大小靠一個產品就能生存的很難了,基本都是最大化的挖掘客戶的需求,最好能提供一整套的解決方案,這些系統能整體銷售更好,而單個產品銷售也得支持。所以不管是客戶的需求還是內部的產品都會存在系統間整合的問題,而利用單點登錄至少能解決用戶統一驗證的問題;

三種系統模式Web、Winform和WCF,分別是怎樣進行用戶驗證

上面講過的Winform系統嵌入Web頁面這種情況下如何使用單點登錄的功能;

在登錄成功後調用框架中的SsoHelper對象的SignIn方法生成TokenKey;

然後把TokenKey值加入Web頁面的URL地址之後,然後web頁面向後台發送Ajax請求的時候把TokenKey當成參數傳入後台,後台進行單點登錄驗證。

單點登錄SSO實現代碼

框架原始碼目錄結構:

其中外部調用SSO功能只需要調用SsoHelper對象就可以了,SsoHelper把SSO封裝成外部調用的類;包括SignIn、SignOut、ValidateToken等方法;TokenManager類存儲所有登錄用戶的信息,TokenInfo類封裝的用戶信息結構;

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場