1. 简介
Spring 是一个非常流行和成功的 Java 应用开发框架。Spring Security 基于 Spring 框架,提供了一套 Web 应用安全性的完整解决方案。一般来说,Web 应用的安全性包括用户认证(Authentication)和用户授权(Authorization)两个部分。
Spring Security 是通过加入自定义过滤器的方式,对访问请求进行认证和鉴权,核心过滤器就是认证过滤器和鉴权过滤器。
用户认证(Authentication)
一般为用户名和密码认证,又称登录验证
用户授权(Authorization)
每个用户对网站的操作权限不同,即分配用户权限
核心
UsernamePasswordAuthenticationFilter 登录认证
(RememberMeAuthenticationFilter,BasicAuthenticationFilter,AnonymousAuthenticationFilter) 其余的认证过滤器
ExceptionTranslationFilter 异常处理
FilterSecurityInterceptor 鉴权拦截处理
2. 认证过程
2.1 认证过程解析
2.1.1 Authentication(用来传递用户信息:用户名 + 密码 + 权限列表等)
2.1.2 UsernamePasswordAuthenticationFilter(账号密码认证过滤器,验证方式由AuthenticationManager 提供)
2.1.3 AuthenticationManager(认证管理器,是发起认证的出发点。提供一个默认实现ProviderManager)
2.1.3.1 ProviderManager(认证提供者管理器,该类中维护了一个认证提供者列表,只要这个列表中的任何一个认证提供者提供的认证方式认证通过,认证就结束。)
2.1.3.1.1 AuthenticationProvider(认证提供者,具体如何认证就看如何实现这个接口。SpringSecurity提供了DaoAuthenticationProvider实现,是使用数据库中数据进行验证)
2.1.3.1.1.1 UserDetailsService(根据用户名获取用户详细信息)
2.1.3.1.1.1.1 UserDetails(用户详细信息)