概念
- Authentication
- AuthenticationDetails
- Credential
- Principal
Principal
可以参考这篇文章来理解:Spring Security 什麼是 Principal。
我将它理解为当前发出操作请求的主体,可以是匿名用户,登录用户,管理员用户等等。Credential
可以参考这篇文章来理解:Spring Security 什麼是 Credential。
我将它理解为验证当前操作主体的一组信息,比如一个 Token 对象。AuthenticationDetails
和上边的 Credential 很容易搞混,这个是从客户端收集到的验证主体真实性的信息,而 Credential 是验证通过后生成的证书。代码准备流程
- AuthenticationDetails,这个类用来保存验证用户的请求信息;
- Authentication,这个类用来保存当前请求的所有信息和状态;
- AuthenticationProvider,这个是我们验证用户身份的逻辑实现类,
- AuthenticationEntryPoint,这个类用来处理验证过程中出现的所有异常错误;
- AuthenticationFilter,这个是开始我们自己验证逻辑的入口。
WebSecurityConfigurer,配置我们自己的验证
逻辑验证流程
AuthenticationFilter,进入我们的验证过滤器
- AuthenticationDetails,收集验证所需的资料
- AuthenticationProvider,开始验证
- Authentication,存储当前的验证信息
- FilterChain,继续向下的流程