SpringSecurity原理图
2020-11-27 14:55:54 0 举报
SpringSecurity原理剖析
作者其他创作
大纲/内容
ImplicitTokenGranter: implicit模式
JdbcTokenStore
否
4. 实现Filter接口,重写doFilter方法
WebAsyncManagerIntegrationFilter
OAuth2ClientAuthenticationProcessingFilter
OAuth2AuthenticationManagerOAuth2.0认证管理者实现类
ResourceServerTokenServices tokenServices;ClientDetailsService clientDetailsService;
Authentication authenticate(Authentication authentication)
1. 发送Http请求
AuthenticationManager授权认证模块
...............
AuthenticationProvider认证提供者
+ Authentication authenticate(Authentication authentication)+ boolean supports(Class<?> authentication)
Authentication
SecurityContextHolder
RedisTokenStore
自定义过滤器,并加入到过滤器链中
JwkTokenStore
SessionManagementFilter
自定义认证Provider
1. 实现AuthenticationProvider接口,实现认证方法
自定义模式: 只需要继承AbstractTokenGranter即可,仿照ResourceOwnerPasswordTokenGranter
Spring-Security-OAuth将OAuth2.0协议和SpringSecurity进行了结合,完美的实现了OAuth2.0安全认证。Spring-Security-OAuth仍遵循SpringSecurity的一个理念。新增Filter过滤器拦截请求,OAuth2AuthenticationManager进行认证。
PreAuthenticatedAuthenticationProvider
SecurityFilterChain过滤器链
BasicAuthenticationFilter
AbstractPreAuthenticatedProcessingFilter
2.授权码模式:AuthorizationEndpoint: /oauth/authorize
ClientCredentialsTokenEndpointFilter
TokenStore
TokenGranter定义的认证的方式。为我们提供了
异常Handler进行异常处理,并返回错误提示信息
InMemoryTokenStore
ClientCredentialsTokenGranter: client_credentials模式
SecurityContext
ResourceOwnerPasswordTokenGranter: 密码模式
AuthenticationManger认证管理者接口
ExceptionTranslationFilter
1.密码模式:TokenEndpoint /oauth/token
FilterChainProxy
通过HttpSecurity的addFilterBefore或addFilterAfter或addFilter,注入到过滤器链中
DefaultLoginPageGeneratingFilter
3. 继承OncePerRequestFilter,重写doFilterInternal方法。一个请求该过滤器只被处理一次
自定义过滤器配置
SecurityContext存储当前线程的认证信息
TokenGranter
ChannelProcessingFilter
ConcurrentSessionFilter
TokenEndpoint为四种认证模式定义了默认的接口
FilterSecurityInterceptor
1. 继承AbstractAuthenticationProcessingFilter类,重写attemptAuthentication方法
OAuth2AuthenticationProcessingFilter
SwitchUserFilter
DefaultLogoutPageGeneratingFilter
认证成功,将认证信息存储在SecurityContext中,并进行接下来的业务处理
Filter过滤器
SecurityContextPersistenceFilter
SpringSecurity OAuth2.0 认证服务
2. 过滤器依赖认证管理者进行认证
是
RefreshTokenGranter: refresh_token模式
UsernamePasswordAuthenticationFilter
2. 继承GenericFilterBean ,重写doFilter方法
ProviderManager认证提供管理者实现类
List<AuthenticationProvider> providers
Authentication authenticate(Authentication authentication)for循环调用各个AuthenticationProvider
3. 认证成功
AuthorizationCodeTokenGranter:授权码模式
TokenEndpoint
DaoAuthenticationProvider
收藏
0 条评论
回复 删除
下一页