Spring Security 认证流程分析及多方式登录认证实践

1 前言

在项目开发过程中,会涉及到安全框架的配置。其中常用的就是 shirospring-security, 在本文中将介绍 spring-security 的工作流程和实践应用,并基于此总结其使用心得和项目配置关键。

2 spring security 认证和权限流程

Spring Security 认证流程分析及多方式登录认证实践_第1张图片

如上图所示,一个请求在达到控制器之前,会经过一系列的过滤器 DefaultSecurityFilterChain,绿色的部分负责用户认证,蓝色的部分处理认证异常的情况,橙色的部分负责用户的授权,最终请求到控制器的方法。在认证完成之后,会将用户认证的结果 Authentication 放进 SecurityContextHolder 中,从中可以获取到用户信息。

在开始之前,需要先介绍一下其他重要的组件

 代码解读复制代码SecurityContextHolder:存放身份信息的容器
Authentication:用户信息的抽象即 security 的认证主体
AbstractAuthenticationToken: authentication 即认证主体的抽象类,
AuthenticationManager:身份认证器接口,具体实现类为 ProviderManager
AuthenticationProvider:用来处理 authentication 的认证信息
AuthenticationSuccessHandler 认证成功处理器
AuthenticationFailureHandler 认证失败处理器

认证的流程如下所示:

scss 代码解读复制代码1 用户请求的接口经过 security 过滤器,按照其登录方式适配的 authentication 封装其认证方法,
通过 AuthenticationProvider 来进行处理认证。获取身份信息会按照其配置provider的顺序来处理。
2 通常情况下将身份信息封装到封装成Authentication下的实现类UsernamePasswordAuthenticationToken,
通常是用户密码的登录方式。
3 通过 AuthenticationManager 身份管理器,通过其配置的provider 验证这个UsernamePasswordAuthenticationToken 的信息。
4 认证逻辑一般是在 service 中,认证成功之后会返回认证信息,Authenti

你可能感兴趣的:(spring,java,数据库)