【精】 一分钟读懂Spring Security的基本原理

9 篇文章 0 订阅
2 篇文章 0 订阅

Spring Security核心原理

spring security 是由一系列的过滤器连构成,主要包行 SpringSecurityContextFilter、UsernamePasswordAuthenticationFilter、ExceptionTranslationFilter、FilterSecurityIntercepor等;

一、核心过滤器

  • SpringSecurityContextFilter,主要是保存当前请求信息,当一个请求经过过滤器连时,SpringSecurityContextFilter先从session中尝试获取SecurityContext(安全上下文),如果不存在,则创建一个安全上下文;当请求结束后,SpringSecurityContextFilter会清空安全上下文信息;
  • UsernamePasswordAuthenticationFilter主要负责表单认证,当请求经过UsernamePasswordAuthenticationFilter时,用户传来的用户名和密码将被封装成token并进行一系列认证;
  • ExceptionTranslationFilter负责异常处理,主要捕获的异常包括认证异常(AuthenticationException)和访问拒绝异常(AccessDeniedException);
  • FilterSecurityInterceptor主要负责授权处理,当请求经过FilterSecurityInterceptor时,系统将从安全上下文中获取Authentication对象进行权限判断;


二、认证流程

用户提交用户名和密码请求服务器时,UsernamePasswordAuthenticationFilter将帐号密码封装成UsernamePasswordAuthenticationToken, 并委托给认证管理器AuthenticationManager进行认证;AuthenticationManager再次委托给DaoAuthenticationProvider进行认证;DaoAuthenticationProvider通过用户名从UserDetailService中获取UserDetails用户信息,然后通过PasswordEncoder来对比UserDetails中的密码;如果校验通过,则将UserDetails中的权限信息等填充到SessionAuthenticationStrategey 和 安全上下文SecurityContext中。
  
  

三、授权流程

当通过认证后,用户访问受保护的资源时,请求将被FilterSecurityInterceptor拦截器拦截,拦截器会从SecurityMetadataSoucrce的子类DefaultFilterInvocationSecurityMetadataSource中获取当前资源所需的权限集合;然后FilterSecurityInterceptor会调用AccessDecisionManager进行投票决策,若决策通过则允许访问资源,否则禁止访问。

四、实践加深理解 

实践参考下一篇文章: https://blog.csdn.net/GeeLoong/article/details/122517674

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值