SpringSecurity概览

简介

安全管理方案常见三种,分别是

  1. Shiro
  2. Spring Security
  3. 自开发安全框架
    在与Spring集成便捷性和微服务应用场景下,Spring Security更加便捷。

核心功能

  1. 认证
    1.1 表单认证
    1.2 RememberMe 自动认证
    1.3 其他
  2. 授权
    2.1 URL授权
    2.2 方法级授权

认证

  1. 认证信息主要由Authentication接口的实现类来保存。
  2. Security的认证工作主要由AuthenticationManager接口管理,对外提供authenticate方法接口。
  3. AuthenticationManager最主要实现类是ProviderManager,而ProvideManager管理AuthenticationProvider实例。
  4. 各个AuthenticationProvider相当于不同的机制,如form表单验证或短信验证码验证。

授权

AccessDecisionManager

决策器,逐个遍历Voter决定是否允许访问。

AccessDecisionVoter

检查用户是否具备应有角色

Security中,用户访问资源都会封装成ConfigAttribute,该对象有一个getAttribute方法会返回角色的名称,即用ROLE_作为前缀修饰的角色。Voter所做的事情就是比较角色和请求 ConfigAttribute的关系。

过滤器

Spring Security认证和首选都是通过过滤器实现的,常用的过滤器有以下:
ChannelProcessingFiler

FIler作用默认加载
ChannelProcessingFiler过滤请求协议,https/httpNo
SecurityContextPersistenceFilter将用户信息加载到SecurityContextHolder,请求结束后再删除SecurityContextHolder中的信息Yes
CorsFilter跨域问题No
CsrfFiltercsrf攻击Yes
LogoutFilter注销登录Yes
UsernamePasswordAuthenticationFilter表单登录Yes
RememberMeAuthenticationFilterRememberMe登录No
FilterSecurityInterceptor处理授权Yes

过滤器并不是直接注入到Web中的过滤器链中,而是交由FilterChainProxy统一管理,通过FilterChainProxy作为整体嵌入到原来的链中。

用户信息访问

  1. 默认登录信息通过ThreadLocal保存在SecurityContextHolder中,只能被当前线程访问到,即当前登录用户信息和当前请求线程是绑定在一起的。
  2. 当请求结束后将Holder中的数据取出保存在Session中,之后清楚Holder中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值