网站建设采购公告,公众号后台登录,wordpress 3.5下载,深圳网站建设模板SpringSecurity执行原理概述
spring security的简单原理#xff1a; SpringSecurity有很多很多的拦截器#xff0c;在执行流程里面主要有两个核心的拦截器
1#xff0c;登陆验证拦截器AuthenticationProcessingFilter
2#xff0c;资源管理拦截器AbstractSecurityInterc…SpringSecurity执行原理概述
spring security的简单原理 SpringSecurity有很多很多的拦截器在执行流程里面主要有两个核心的拦截器
1登陆验证拦截器AuthenticationProcessingFilter
2资源管理拦截器AbstractSecurityInterceptor
但拦截器里面的实现需要一些组件来实现所以就有了AuthenticationManager认证管理器、accessDecisionManager决策管理器等组件来支撑。 FilterChainProxy是一个代理真正起作用的是各个Filter这些Filter作为Bean被Spring管理是Spring Security核心各有各的职责不直接处理认证和授权交由认证管理器和决策管理器处理
大概流程 认证管理
流程图解读 1、用户提交用户名、密码被SecurityFilterChain中的 UsernamePasswordAuthenticationFilter 过滤器获取到 封装为请求Authentication通常情况下是UsernamePasswordAuthenticationToken这个实现类。 2、然后过滤器将Authentication提交至认证管理器AuthenticationManager进行认证 。 3、认证成功后 AuthenticationManager 身份管理器返回一个被填充满了信息的包括上面提到的权限信息 身份信息细节信息但密码通常会被移除 Authentication 实例。 4、SecurityContextHolder 安全上下文容器将第3步填充了信息的 Authentication 通过 SecurityContextHolder.getContext().setAuthentication(…)方法设置到其中。 可以看出AuthenticationManager接口认证管理器是认证相关的核心接口也是发起认证的出发点它 的实现类为ProviderManager。而Spring Security支持多种认证方式因此ProviderManager维护着一个 List 列表存放多种认证方式最终实际的认证工作是由 AuthenticationProvider完成的。咱们知道web表单的对应的AuthenticationProvider实现类为 DaoAuthenticationProvider它的内部又维护着一个UserDetailsService负责UserDetails的获取。最终 AuthenticationProvider将UserDetails填充至Authentication。
授权管理 访问资源即授权管理访问url时会通过FilterSecurityInterceptor拦截器拦截其中会调用SecurityMetadataSource的方法来获取被拦截url所需的全部权限再调用授权管理器AccessDecisionManager这个授权管理器会通过spring的全局缓存SecurityContextHolder获取用户的权限信息还会获取被拦截的url和被拦截url所需的全部权限然后根据所配的投票策略有一票决定一票否定少数服从多数等如果权限足够则决策通过返回访问资源请求放行否则跳转到403页面、自定义页面。
转载自https://blog.csdn.net/weixin_51542566/article/details/119705963
详细执行流程