security密码验证原理

用户名和密码被放到UsernamePasswordAuthenticationToken中,

-(GrantedAuthority,反应,在应用程序范围你,赋予主体的权限。将取得用户权限,并放入token中)

把token放入AuthenticationManager中进行验证,成功则返回一个

带有用户名,密码和权限列表的完整信息的Authentication。

-(UserDetails,用于构建Authentication 对象。)

--(UserDetailsService,创建一个UserDetails,传递一个String 类型的用户名(或者证
书ID 或其他)。)

然后通过SecurityContextHolder.getContext().setAuthentication(Authentication)放入

SecurityContext中,用于以后的验证。

(SecurityContextHolder,提供几种访问SecurityContext 的方式。
SecurityContext,保存Authentication 信息,和请求对应的安全信息。)

SecurityContext存储于HttpSession中。


AuthenticationProvider,验证的时候会加载对应的UserDetails 对象- 特别是包含的GrantedAuthority(权限)。

如果成功,则返回一个成功验证,保存到SecurityContext 中


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Security的底层原理主要涉及以下几个关键概念和组件: 1. 过滤器链(Filter Chain):Spring Security通过一系列过滤器来处理请求。每个过滤器都有特定的功能,例如身份验证、授权、会话管理等。过滤器链按照一定的顺序依次执行,直到达到最终的目标,如身份验证通过或访问被拒绝。 2. 认证提供者(Authentication Provider):认证提供者负责验证用户的身份。它接收用户提交的凭证(如用户名和密码),并进行验证。Spring Security提供了多种认证提供者,如基于数据库的认证提供者、LDAP认证提供者等。你也可以自定义认证提供者来适应特定的身份验证需求。 3. 安全上下文(Security Context):安全上下文是一个存储当前用户信息的容器。它通常存储在ThreadLocal中,可以在应用程序的任何地方访问当前用户的身份信息。Spring Security使用SecurityContextHolder来管理安全上下文。 4. 访问决策管理器(Access Decision Manager):访问决策管理器负责决定用户是否有权访问特定资源。它根据用户的角色和权限信息,以及配置的访问规则,判断用户是否被授予访问权限。 5. 用户详细信息服务(UserDetailsService):用户详细信息服务负责根据用户名获取用户详细信息。它通常与认证提供者一起使用,用于获取用户的密码和权限信息。 以上是Spring Security的一些核心概念和组件,它们相互协作来实现身份验证和授权功能。Spring Security的具体实现细节非常复杂,涉及到很多设计模式和算法,但这些核心概念和组件可以帮助你理解其底层原理

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值