小工具知识网

当前位置: 首页 > 行业知识 > Spring Security认证授权流程详解

行业知识

Spring Security认证授权流程详解

2026-11-16 00:06:57 来源:互联网转载

认证的工作原理

过滤链

Spring Security���架的作用就是安全访问控制即对所有进入系统的请求进行拦截, 校验每个请求是否能够访问到它所期望的资源

通过Filter或AOP等技术可以实现安全访问控制功能,而Spring Security对Web资源的保护是靠Filter实现的,Spring Security有一个过滤链

Spring Security框架中真正起作用的是FilterChainProxy中的SecurityFilterChain所包含的各个Filter

过滤器功能
SecurityContextPresistenceFilter整个拦截过程的入口和出口即第一个和最后一个拦截器
在请求开始时从配置好的SecurityContextRepository中获取SecurityContext给SecurityContextHolder
在请求完成后将SecurityContextRepository持有的SecurityContext再保存到配置好的SecurityContextRepository,同时清除SecurityContextHolder所持有的SecurityContext
UsernamePasswordAuthenticationFilter处理来自表单提交的认证,要求表单必须提供对应的用户名和密码
其内部还有登录成功或失败后进行处理的AuthenticationSuccessHandler和AuthenticationFailureHandler
FilterSecurityInterceptor用于保护web资源的,使用AccessDecisionManager对当前用户进行授权访问
ExceptionTranslationFilter捕获来自 FilterChain所有的异常并进行处理
它只会处理AuthenticationException和AccessDeniedException这两类异常,其它的异常它会继续抛出

认证流程

Spring Security的执行流程如下

  1. 用户提交的用户名、密码被SecurityFilterChain中的UsernamePasswordAuthenticationFilter过滤器获取到并把其封装到Authentication请求对象中
  2. UsernamePasswordAuthenticationFilter过滤器将Authentication请求对象提交至认证管理器AuthenticationManager进行认证
  3. 认证管理器有个实现类列表List负责完成实际认证工作,不同的实现类代表不同的认证方式,如web表单的实现类为DaoAuthenticationProvider,其内部维护着一个UserDetailsService负责从数据库中获取用户信息UserDetails(实体类)
  4. DaoAuthenticationProvider会将用户提交的表单信息和从数据库中查询到的用户信息进行认证比对(如密码比对),如果验证通过会将查询到用户的权限,身份等细节信息填充到提交的Authentication请求对象中
  5. 通过SecurityContextHolder(安全上下文容器)将包含了用户权限,身份等细节信息的Authentication请求对象保存都安全上下文中,方便在业务类中随时获取

上一篇:C-Lodop (Print)前端自定义打印控件

下一篇:fsync深度解析,确保数据持久化的核心操作