当前位置: 首页>編程日記>正文

springSecurity分离资源服务器分析

springSecurity分离资源服务器分析

参考:https://github.com/spring-guides/tut-spring-security-and-angular-js/tree/master/vanilla
使用SpringSession实现HttpSession共享,从客户端传过来的Token到资源服务器进行Token解码这种思路简单,实现却不简单的做法在生产上应该不会去应用.主要原理看下图:
原理图
1.浏览器向UI服务器进行认证授权
2.将认证授权信息存储在Redis服务器
3.浏览器从UI获取Token(实际就是sessionId)
4.浏览器发送Token到Resource服务器获取资源
5.Resource服务器根据Token向Redis服务器获取认证授权信息
6.根据认证授权信息返回资源给浏览器

关键点分析:

在org.springframework.session.data.redis.config.annotation.web.http.RedisHttpSessionConfiguration#springSessionRepositoryFilter注册springSessionRepositoryFilter Bean时会使用在demo.ResourceApplication#sessionStrategy注册的HeaderHttpSessionStrategy Bean.HeaderHttpSessionStrategy Bean会被注入到springSessionRepositoryFilter Bean的httpSessionStrategy属性.

在org.springframework.session.web.http.SessionRepositoryFilter声明了SessionRepositoryRequestWrapper内部类,spring security在这里对HttpSession进行了再封装.于是在调用getSession方法,会根据httpSessionStrategy去取sessionId(常见有CookieHttpSessionStrategy和HeaderHttpSessionStrategy).

当发送请求时,会被一系列的拦截器拦截(看org.springframework.security.web.FilterChainProxy.VirtualFilterChain#doFilter),直到这个Filter为SecurityContextPersistenceFilter时,调到doFilter的SecurityContext contextBeforeChainExecution = repo.loadContext(holder);这里就会触发getSession方法.得到Session后就可以得到认证授权信息.

从UI服务器返回的响应,再次以ajax方式向Resource服务器发请求,这里就发生了跨域问题,对跨域问题,spring 4.2开始,得到了较好的支持.

发送Token是以请求头的方式发送到资源服务器的,里面还介绍了为什么不用cookie.


https://www.fengoutiyan.com/post/15435.html

相关文章:

  • ssm前后端分离
  • redis主服务器崩溃了
  • 从服务怎么办
  • was jdbc连接池配置
  • springcloud集群搭建
  • redis缓存服务器
  • docker资源隔离
  • springmvc前后端分离
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機