【SSO】--實現單點登入研究過程總結

ZeroWM發表於2015-07-17


一、單點登入實現結果:

許可權系統登入後,新生系統通過攔截器,獲取本地的cookie可以訪問該系統;許可權系統使用者登出後,銷燬本地cookie,訪問新生連結,自動跳轉到登入首頁。

 

二、主要遇到的問題:

實現本地cookie的跨域共享

 

三、解決方案:

1. 在url地址後面加一個票據ticket=guid,然後把ticket存入到快取中,攔截器對許可權進行攔截的時候,,獲取ticket後面的引數,跟本地的快取做對比,判斷是否可以登入。

失敗原因:普通的類裡面無法獲取瀏覽器的地址和引數。


2. 把使用者資訊存入到本地cookie,  memacache作為第三方快取,許可權驗證的時候進行本地cookie和memacache的使用者登入資訊驗證。

失敗原因:存入memacache的cookie無法取出。


3. 通過IO流,把使用者資訊存入到本地,讓子系統登入時攔截器攔截的時候獲取IO流裡面的使用者驗證資訊。

失敗原因:子系統無法監測到存有使用者資訊的txt檔案。


4. 存入cookie,通過許可權filter的 Var memberValidation = filterContext.HttpContext.Request.Cookies.Get("selfUserInfo");獲取本地cookie,能夠實現本地cookie資訊的驗證。



                                                                                            V1.0


   

                                                                                            V2.0



四、感受:

1. 學會站在巨人的肩膀上。

一開始想要全部手寫CAS,不過偶然間發現MVC自帶登入生成票據的方法,通過底層學習了這些方法,不怕不知道,就怕不知道

 

2. 黑貓白貓抓住老鼠就是好貓。

單點登入要的結果就是隻需登入一個系統,可以訪問其他的被信任的系統應用;退出系統,其他應用也隨之退出。

不論Java還是.NET,實現這個效果就很好,不一定跟Java的CAS登入完全一樣。

 

3. 結對程式設計效率高。

不同的同學,不一樣的思路,結對程式設計比較不枯燥,目標一致,效率比較高。


4.跟大神在一起研究能學到很多東西。



相關文章