SpringSecurity-设计思想

前言

系统安全可分为身份认证和授权验证两个部分,spring security提供了这两种能力,本文讲述security的设计思路。

设计思想

不赘言,开门见山,简单明了简述spring security的设计思想:

通过filter实现security!使用责任链实现身份认证和授权验证。

就像这样哦。

 

DelegatingFilterProxy

作用在于:在servlet容器和springContext之间进行桥接。

详细描述下,servlet容器使用自己的标准去注册filter,但是无法感知spring组建的bean。DelegatingFilterProxy的作用在于:DelegatingFilterProxy注册到servlet容器中,然后把所有工作委托给实现filter的springbean。

FilterChainProxy SecurityFilterChain

作用在于:把security工作委派给更多的filter bean。

看图更清晰哦。

做一些介绍

security工作的委派流程:

  1. DelegatingFilterProxy,把工作交给FilterChainProxy;
  2. FilterChainProxy又把工作交个SecurityFilterChain;
  3. SecurityFilterChain把工作交给SecurityFilter链;

securityFilter是一些特殊类型的bean,通过FilterChainProxy注册到SecurityFilterChain。 

有一个问题:

为什么没有直接在DelegatingFilterProxy中注册securityFilter呢?

  1. FIlterChainProxy作为security的工作起点,可以从这里开始debug。
  2. FilterChainProxy作为security的执行核心,执行了一些不可选的行为。例如最终清理securityContext,使用security的httpfirewall防火墙。
  3. 支持多个SecurityFilterChain,根据url进行匹配选择,即根据url选择不同的安全策略。

官方是这么说的,源码自然也是这么写的。

接下来通过源码,看看FilterChainProxy都做了什么事情:

org.springframework.security.web.FilterChainProxy#doFilter

org.springframework.security.web.FilterChainProxy#doFilterInternal

参考文档

Spring Security Reference

关于security,我的其他文章。

SpringSecurity-身份认证原理_陈海龙的格物之路-CSDN博客如果你对SpringSecurity-身份认证原理还不了解,这篇文章可以满足你哦。https://blog.csdn.net/chl87783255/article/details/120291501SpringSecurity-授权验证原理_陈海龙的格物之路-CSDN博客本文介绍SpringSecurity授权验证的原理。如果你还不了解原理,快来看看吧。https://blog.csdn.net/chl87783255/article/details/120292485

SpringSecurity-自定义分布式session与url授权验证_陈海龙的格物之路-CSDN博客springsecurity通过配置实现自定义扩展,例如实现分布式session、url授权验证等。来吧,一起看看怎么玩security。https://blog.csdn.net/chl87783255/article/details/120288973

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值