前言:SpringSecurity其实一早就出现在项目的框架中,平时也多多少少会接触到,但一直没有整块的时间让我去全面的学习,现在逮到机会要把它更全面的了解一下~
概念
SpringSecurity是基于Spring的 企业应用系统提供声明式的 安全访问控制解决方式的 提供身份验证和授权的 安全框架。
应用的安全性包括用户认证(Authentication)和用户授权(Authorization)。
- 用户认证指的是验证某个用户是否为系统中的合法主体,也就是说用户能否访问该系统。用户认证一般通过校验用户名和密码来完成。
- 用户授权指的是验证某个用户是否有权限执行某个操作。
列一下具体的类~
过滤器
web应用的安全框架最常用的收发就是使用Filter~
如下为其主要过滤器
- WebAsyncManagerIntegrationFilter
- SecurityContextPersistenceFilter
- HeaderWriterFilter
- CorsFilter
- LogoutFilter
- RequestCacheAwareFilter
- SecurityContextHolderAwareRequestFilter
- AnonymousAuthenticationFilter
- SessionManagementFilter
- ExceptionTranslationFilter
- FilterSecurityInterceptor
- UsernamePasswordAuthenticationFilter
- BasicAuthenticationFilter
框架的核心组件
- SecurityContextHolder:提供对SecurityContext的访问
- SecurityContext,:持有Authentication对象和其他可能需要的信息
- AuthenticationManager 其中可以包含多个AuthenticationProvider
- ProviderManager对象为AuthenticationManager接口的实现类
- AuthenticationProvider 主要用来进行认证操作的类 调用其中的authenticate()方法去进行认证操作
- Authentication:Spring Security方式的认证主体
- GrantedAuthority:对认证主题的应用层面的授权,含当前用户的权限信息,通常使用角色表示
- UserDetails:构建Authentication对象必须的信息,可以自定义,可能需要访问DB得到
- UserDetailsService:通过username构建UserDetails对象,通过loadUserByUsername根据userName获取UserDetail对象 (可以在这里基于自身业务进行自定义的实现 如通过数据库,xml,缓存获取等)
网友评论