spring security 过滤器链
2022-03-30 01:59:30 10 举报
Spring Security过滤器链是用于处理HTTP请求的一系列过滤器。这些过滤器按照特定的顺序排列,每个过滤器都有特定的职责,例如认证、授权、日志记录等。当一个请求到达服务器时,它首先会被第一个过滤器处理,然后依次传递给后续的过滤器。每个过滤器都会对请求进行处理,并根据需要修改请求或响应。最后,请求会到达最后一个过滤器,该过滤器负责将请求传递给目标资源。过滤器链的配置可以通过XML文件或Java配置类来完成。总之,Spring Security过滤器链是一个功能强大且灵活的工具,可以帮助我们实现安全、高效的Web应用程序。
作者其他创作
大纲/内容
SecurityContextHolder
默认使用ThreadLocal策略来存储认证信息
Authentication
UserDetails
它和Authentication接口类似,都包含了用户名,密码以及权限信息,而区别就是Authentication中的getCredentials来源于用户提交的密码凭证,而UserDetails中的getPassword取到的则是用户正确的密码信息,认证的第一步就是比较两者是否相同,除此之外,Authentication#getAuthorities是认证用户名和密码成功之后,由UserDetails#getAuthorities传递而来。而Authentication中的getDetails信息是经过了AuthenticationProvider认证之后填充的
UserDetailsService
只有一个方法,就是从特定的地方(一般是从数据库中)加载用户信息。
AuthenticationManager
AuthenticationManager接口只包含一个方法,那就是认证,它是认证相关的核心接口,也是发起认证的出发点。实际业务中可能根据不同的信息进行认证,所以Spring推荐通过实现AuthenticationManager接口来自定义自己的认证方式.Spring提供了一个默认的实现,ProviderManager。
AuthenticationProvider
RequestCacheAwareFilter
过滤器链执行(顺序FilterComparator)
EnableWebSecurity
spring security核心组件
AuthenticationSuccessHandler
由此过滤器可以生产一个默认的退出登录页面判断是否是/logout
WebAsyncManagerIntegrationFilter
是
默认自动构造一个登录页面给用户支持:用户名/密码表单登录OpenID表单登录
@Bean(name = \"springSecurityFilterChain\")
UserDetailsChecker
针对ServletRequest进行了一次包装,使得request具有更加丰富的API
FilterSecurityInterceptor
WebSecurityEnablerConfiguration
CsrfFilter
AccessDeniedHandler
获取所配置资源访问的授权信息,根据SecurityContextHolder中存储的用户信息来决定其是否有权限。
TokenBasedRememberMeServices
SecurityProperties
controller
SecurityFilterAutoConfiguration
请求开始
DefaultLogoutPageGeneratingFilter
@Import
AuthenticationManager认证管理器
AccessDecisionManager(默认AffirmativeBased)投票策略:- AffirmativeBased类只需有一个投票赞成即可通过;- ConsensusBased类需要大多数投票赞成即可通过;- UnanimousBased类需要所有的投票赞成才能通过。
用于处理跨站请求伪造,POST请求需要验证CSRF token(doFilterInternal)
DaoAuthenticationProvider认证服务提供方
SecurityContextRepository限制同一用户开启多个会话的数量
将Security上下文与Spring Web中用于处理异步请求映射的 WebAsyncManager 进行集成。
AnonymousAuthenticationFilter
WebSecurityConfiguration
@SpringBootApplication
ExceptionTranslationFilter
判断logout
DefaultLoginPageGeneratingFilter
AuthenticationUserDetailsService
LogoutFilter
是否登录请求
SecurityContextHolderAwareRequestFilter
否
PreAuthenticatedAuthenticationProvider
PasswordEncoder
AuthenticationFailureHandler
SecurityContextPersistenceFilter
是否有权限
@EnableConfigurationProperties
Creates the Spring Security Filter Chain
SecurityAutoConfiguration
@AutoConfigureAfter
SecurityContextLogoutHandler
通过HttpSessionRequestCache内部维护了一个RequestCache,用于缓存HttpServletRequest
异常转换过滤器位于整个springSecurityFilterChain的后方,用来转换整个链路中出现的异常
是:自定义登录
配置登录
认证成功
LogoutBeanDefinitionParser
LogoutHandler
SessionManagementFilter
一:请求开始时从对应的SecurityContextRepository获取securityContext存入SecurityContextHolder中二:请求结束时清除SecurityContextHolder中的securityContext,将本次请求执行后新的SecurityContext存入到对应的SecurityContextRepository中
UsernamePasswordAuthenticationFilter
@EnableWebSecurity
HeaderWriterFilter
判断配置/logout-->
SpringBoot启动加载过滤器链流程
CookieClearingLogoutHandler
LogoutSuccessHandler
收藏
收藏
0 条评论
下一页