系统间账号认证系统同步方案
系統間賬號認證系統同步方案
?
基礎原理:(基于Web)
瀏覽器在個請求傳遞cookie到服務器,服務器對cookie增刪改查的操作, 寫入JSessionId實現與服務器Session的綁定,保持會話
單機情況下:一個域名,對應一個cookie,對應一個JsessionId,與一個服務器Session會話
?
基于原理解決方案需要解決兩個問題:
1. Cookie在不同域名(系統)間的傳遞問題
2. 服務器Session在不同服務器
?
問題1的解決方案:
cookie中的數據有三個屬性:domain、path、name。cookie新增和刪除,沒有修改選項,name相同,domain以及path不同,當做不同的cookie來處理
又衍生出了兩種情況:
在同一個域名以及子域名下面的處理方式:使用domain綁定頂級域名
在不同域名下面的系統的處理方式:通過sso的模式,傳遞ticket,驗證ticket獲取用戶信息,生成自己的sessionId到cookie中
?
?
問題2的解決方案:
部署在同一臺服務器:使用堆外內存,磁盤緩存來實現:ehcache
部署在不同服務器:使用redis、memcache緩存來實現
實現方式:
框架:spring-session、shiro-SessionManager模塊、使用redis客戶端
自研:修改實現JavaEE關于Session的增刪改查,實現分布式回話
?
上述問題比較麻煩的就是不同域名下系統的解決方案:單點登錄
底層方案:
JavaEE接入Cas的客戶端和服務端實現手動實現單點登錄
使用框架:
spring-cas
shiro整合cas
其他方式:
零侵入整合業務系統:https://www.cnblogs.com/baibaomen/p/sso.html
?
Tomcat容器其實實現了對應的Cookie的配置,但是過于依賴容器,在代碼中實現,而非在運維層面上實現是更好的選擇。
?
參考資料:
單點登錄時序圖:https://www.cnblogs.com/baibaomen/p/sso-sequence-chart.html
github單點登錄資料:https://github.com/baibaomen/BaibaomenSsoLesson
域名之間的cookie共享情況:https://segmentfault.com/a/1190000006932934?utm_source=tag-newest
JavaEE基礎教程書籍:《JavaWeb整合開發王者歸來》熟悉JavaEE基本對象以及基礎流程以及原理,容器只是基礎規范的實現
轉載于:https://www.cnblogs.com/fly-piglet/p/11059300.html
總結
以上是生活随笔為你收集整理的系统间账号认证系统同步方案的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 小说中描写欢爱的句子66句
 - 下一篇: 海陵岛在哪里