spring security 过滤器链
2022-03-30 01:59:30
登录查看完整内容
spring security 过滤器链
举报
猜你喜欢
大纲/内容
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 条评论
回复 删除
下一页
职业:部门经理
作者其他创作:
MyBatis理论与实践
27596 2022-08-09
SpringBoot 自定义starter
28815 2022-05-15
@SpringBootApplication 原理及核心源码解读
25709 2022-04-24
spring security 过滤器链
31997 2022-03-30
(3)线上问题/发现/定位/分析
28167 2022-03-02
Mybatis架构原理
32884 2022-02-25
(0)整合力-系统思维
32111 2022-02-19
(0)整合力-整合思维模型
35135 2022-02-19
(0)设计力-最小可行产品(MVP)
34962 2022-02-19
(0)学习力-费曼技巧
36656 2022-02-18
(0)学习力-学习金字塔
37626 2022-02-17
(1)GIT协同开发流程和微服务部署
41856 2022-02-11
(2)监控体系-下
32348 2022-02-07
(2)监控体系-上-漏斗模型
42065 2022-02-06
(1)微服务架构图-上
46715 2022-02-01
微服务
42618 2020-04-14