1.Spring Security
Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架。
SpringSecurity核心功能:认证(身份校验,你是谁),授权(你能干什么),攻击防护(防止伪造身份)
下面几步就是Spring Security的简单使用及基本原理。
2.注入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-config</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-core</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-security</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.social</groupId>
<artifactId>spring-social-web</artifactId>
<version>1.1.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.3.4.RELEASE</version>
</dependency>
注:在依赖maven时需注意各个依赖包之后的version须保持对应一致,否则可能会报错
3.重写config方法
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.formLogin() //使用表单登录
// .httpBasic() //使用httpBasic登录
.and()
.authorizeRequests() //授权配置
.anyRequest() //任何请求
.authenticated(); //都需要身份认证
}
}
4.登录
默认用户名为user,密码为自己项目控制台打印的
Using generated security password: 451333a4-d952-4cdd-812f-ee98f19fee08
5.SpringSecurity基本原理
SpringSecurity 最核心的东西 其实是一个过滤器链,一组Filter
所有发送的请求都会经过Filter链,同样响应也会经过Filter链,
在系统启动的时候springboot会自动的把他们配置进去(Springboot只是一种框架,只是方便了使用,其核心还是一样的)
认证原理:
1.绿色的过滤器负责认证方式,比如默认的basic认证,表单认证以及后续的短信认证都属于绿色的过滤器。
2.橙色的过滤器是最后一个过滤器,相当于一个守门员,它决定用户是否认证和授权,若没有的话会抛出异常。
3.蓝色是异常处理过滤器,它负责对橙色过滤器抛出的异常进行各式各样的处理。
4.绿色的过滤器可以通过配置可以决定是否生效以及顺序,而橙色和蓝色的顺序是固定的。