Spring Security

1、Spring Security和Shiro

  • Spring Security重量级,配置简单

  • Shiro轻量级,配置复杂

2、认证和授权

  • UsernamePasswordAuthenticationFilter负责认证

  • FilterSecurityInterceptor负责授权

3、核心组件

  • SecurityContextHolder:存储身份信息和认证信息(使用ThreadLocal策略来存储认证信息),可在程序任何地方获取SecurityContext,使用SecurityContextHolder.getContext()来获取

  • Authentication:用来获取当前登录用户的认证信息

    • Principal:用户信息,没有认证时一般是用户名,认证后一般是用户对象

    • Credentials:用户凭证,一般是密码

    • Authorities:用户权限

  • SeucirtyContext:上下文对象,用来获取Authentication,调用getAuthentication()方法

  • AuthenticationManager: 身份认证器,认证的核心接口

  • UserDetailsService:一般用于从数据库中加载身份信息

  • UserDetails: 相比Authentication,有更详细的身份信息

4、认证流程

  1. 用户提交用户名和密码

  2. 根据用户名查询数据库,得到用户信息,和数据库中的数据进行比对

  3. 若对比通过,把数据封装到Authentication中

  4. 最后把Authentication返回到SeucirtyContext上下文中

5、授权流程

  1. 拦截请求:已认证用户访问受保护的web资源将被SecurityFilterChain中的 FilterSecurityInterceptor 的子类拦截

  2. 获取请求策略:FilterSecurityInterceptor会从 SecurityMetadataSource 的子类DefaultFilterInvocationSecurityMetadataSource 获取要访问当前资源所需要的权限集合

  3. FilterSecurityInterceptor会调用 AccessDecisionManager 进行授权决策,若决策通过,则允许访问资源,否则将禁止访问

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值