spring security
2021-07-06 16:25:19 76 举报
Spring Security是一个基于Spring框架的安全框架,它提供了一套完整的安全解决方案,包括认证、授权、防护攻击等功能。Spring Security的设计目标是为Java应用程序提供全面的安全服务,使得开发者可以更加专注于业务逻辑的开发,而不需要花费大量的时间和精力来处理安全问题。Spring Security的主要特性包括:认证和授权、防止CSRF攻击、防止点击劫持、防止会话固定攻击、密码加密存储等。Spring Security的使用非常灵活,可以与各种Web框架无缝集成,如Spring MVC、Struts2等。
作者其他创作
大纲/内容
自定义 UserDetailsService 实现类
FilterChainProxy
JaasApiIntegrationFilter
3
UsernamePasswordAuthenticationFilter
2
FilterSecurityInterceptor
Authentication
UsernamePasswordAuthenticationToken
实现
1
UserDetailsService
RememberMeAuthenticationFilter
4. DaoAuthenticationProvider 将第3步中查询到的 UserDetails 中的用户名、密码,与 Authentication 中用户输入的用户名、密码比较,一致则认证成功,并将 UserDetails 中的数据封装成一个新的 Authentication 返回
AuthenticationProvider
UserDetails
4
1. UsernamePasswordAuthenticationFilter 将认证请求参数封装成 UsernamePasswordAuthenticationToken后,交给 AuthenticationManager 处理
AuthenticationProvider 链
6
ProviderManager
DaoAuthenticationProvider
AuthenticationManager
HTTP 认证请求
SecurityContext
类
自定义 UserDetails 实现类
AnonymousAuthenticationFilter
0
SecurityContextPersistenceFilter
接口
SecurityContextHolderAwareRequestFilter
5. ProviderManager 返回第四步中新生成的 Authentication
2. ProviderManager 将 Authentication 委托给 AuthenticationProvider 链处理
ExceptionTranslationFilter
ChannelProcessingFilter
SecurityContextHolder
5
ConcurrentSessionFilter
6. 将第5步中返回的 Authentication 设置到 SecurityContext 并将 SecurityContext 放入 SecurityContextHolder 中
3. DaoAuthenticationProvider 中的 UserDetailsService 调用自己的 loadUserByUsername() 方法获取UserDetails
0 条评论
下一页