乙個簡單的單點登入構思

2021-07-23 06:25:19 字數 858 閱讀 6090

通過這次跟協同部門(下文用第三方表示)的sso聯調,總的來說sso就是要保證客戶端與登入使用者繫結的唯一性,而這裡的客戶端指的是單個瀏覽器(這裡或許可以考慮一下公升級到機器級別),下面是摸索出來的乙個簡單方法:

1.客戶端在跳轉至第三方的站點時,傳送乙個確認登入狀態的請求,sso伺服器接收到客戶端的請求之後,通過讀取瀏覽器cookie裡記錄的token-key和ip-key來驗證使用者的登入狀態。確認時先讀取cookie裡面的ip-key的值來與請求裡面獲取到的客戶端ip來生成乙個tmp-key與ip-key進行對比確認。ip-key確認通過後,再讀取cookie裡面的token-key,以token-key為redis的key值去獲取token,獲取到token之後通過aes解密得到memberid資訊,如果獲得的memberid為有效資訊,則認為使用者已經登入並返回客戶端。

2.客戶端在獲取到登入成功資訊之後,告知第三方伺服器使用者已經登入。最初的想法是:第三方伺服器讀取ip-key和token-key的cookie來作為裝置資訊和使用者資訊來請求獲得詳細的使用者資訊,在聯調的過程中發現由於伺服器的ip與客戶端的ip是不一致的導致裝置驗證不通過。為了解決這個問題,決定生成乙個固定的裝置資訊給第三方伺服器,從而解決了裝置驗證的問題。

3.sso伺服器接收到第三方伺服器的使用者資訊請求之後,驗證裝置資訊以及從redis讀取對應的token,通過aes解密得到memberid資訊,然後獲取對應的詳細會員資訊並返回給第三方。此處讀取會員資訊從redis讀取可以一定程度上減輕會員資訊服務的訪問壓力。

在總結的時候發現一處缺陷,即保持ip-key的cookie不變,然後修改token-key的cookie亦可以繞過裝置繫結的設定,這裡想到乙個解決方案是可以把登入ip儲存到

redis-info-value的乙個field中。

1 請求安全 乙個簡單的 單裝置登入 單點登入

sso英文全稱single sign on,單點登入。sso是在多個應用系統中,使用者只需要登入一次就可以訪問所有相互信任的應用系統。它包括可以將這次主要的登入對映到其他應用中用於同乙個使用者的登入的機制。它是目前比較流行的企業業務整合的解決方案之一。實現sso的技術主要有 1 基於cookies實...

解決單點登入的乙個方法!

使用者登入時,這樣寫 user user dao.login username,password 資料庫中判斷使用者名稱和密碼 if null user 當使用者訪問到其他url的時候,可以在過濾器或你的 中這樣寫 user user user session.getattribute user 從...

如何設計乙個單點登入系統(2)?

如何設計乙個單點登入系統 1 中,我著重從單點登入系統的由來,單點登入的概念,乙個好的單點登入系統應該具備的特點以及本人親自實現的乙個單點登入系統幾方面做了些介紹,這篇文章主要介紹下具體實現方案。1.1 傳統sso實現方案 登入 1.2 傳統sso實現方案 登出 圖1.1為傳統sso實現方案中登入流...