SpringBoot3 集成 Spring Security6 详细介绍
1.Spring Security简介
根据官网简介,Spring Security 是一个提供身份验证、授权和防御常见攻击的框架。它对命令式和响应式应用程序的安全提供了一流的支持,是保护基于 Spring 的应用程序的事实标准。
1.身份验证
Spring Security 为身份验证提供了全面的支持。身份验证是我们验证尝试访问特定资源的用户身份的方式。在java语言中,我们验证用户身份的常用方法是要求用户输入用户名和密码。一旦完成身份验证,我们就可以知道身份并执行授权(通俗的讲:身份验证就是用户通过输入用户名和密码去核实身份的过程)
1)selvet身份验证框架
- SecurityContextHolder——是Spring Security 存储经过身份验证的SecurityContextHolder人员的详细信息的地方
- SecurityContext - 从中获取SecurityContextHolder并包含Authentication当前经过身份验证的用户的。
- 身份验证——可以是输入,以AuthenticationManager提供用户提供的用于身份验证的凭据或来自的当前用户SecurityContext。
- GrantedAuthority - 授予主体的权限Authentication(即角色、范围等)
- AuthenticationManager——定义 Spring Security 的过滤器如何执行身份验证的API 。
- ProviderManager——最常见的实现AuthenticationManager。
- AuthenticationProvider——用于ProviderManager执行特定类型的身份验证。
- 请求凭证AuthenticationEntryPoint- 用于从客户端请求凭证(即重定向到登录页面、发送WWW-Authenticate响应等)
- AbstractAuthenticationProcessingFilter - 用于身份验证的基础Filter。它能够很好地展现身份验证的高层流程以及各个部分如何协同工作。
2) 表单登录
Spring Security提供了对通过HTML表单提供用户名和密码的支持。
1 首先,一个用户向其未被授权的资源(/private)发出一个未经认证的请求。
2 Spring Security 的 AuthorizationFilter 通过抛出一个 AccessDeniedException 来表明未经认证的请求被拒绝了。
3 由于用户没有被认证,ExceptionTranslationFilter 启动了 Start Authe