Spring Security 的配置步骤


Spring Security 是 Spring 框架的安全认证和授权框架,提供了一系列的安全功能,例如身份验证、访问控制、加密、记住我、单点登录等功能。

下面是 Spring Security 配置步骤:

  1. 引入 Spring Security 依赖

首先,在项目的 pom.xml 文件中引入 Spring Security 依赖:

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>5.5.1</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>5.5.1</version>
</dependency>
  1. 创建 Spring Security 配置类

在项目中创建一个 Java 配置类,用于配置 Spring Security:

1
2
3
4
5
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
// TODO: 添加配置项
}

在这个配置类中,需要添加一些配置项,例如:

  • configure(HttpSecurity http) 方法:用于配置安全拦截规则,例如哪些路径需要认证、认证方式、登录页面、成功/失败跳转等;
  • configure(AuthenticationManagerBuilder auth) 方法:用于配置身份认证的方式,例如使用内存、JDBC、LDAP 等方式。
  1. 配置 HttpSecurity

configure(HttpSecurity http) 方法中,可以使用 HttpSecurity 对象配置安全拦截规则。例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/login").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.defaultSuccessUrl("/")
.failureUrl("/login?error")
.permitAll()
.and()
.logout()
.logoutSuccessUrl("/")
.permitAll();
}

在这个示例中,定义了以下安全拦截规则:

  • /login 路径的请求不需要进行身份验证,任何人都可以访问;
  • /admin/** 的路径需要 ADMIN 角色才能访问;
  • 其他所有请求需要身份认证。

formLogin() 方法中,配置了登录页面、登录成功后跳转到的页面、登录失败后跳转到的页面。

logout() 方法中,配置了退出登录后跳转到的页面。

  1. 配置身份认证方式

configure(AuthenticationManagerBuilder auth) 方法中,可以配置身份认证的方式。例如,以下代码使用内存存储用户和角色信息:

1
2
3
4
5
6
7
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("password").roles("USER")
.and()
.withUser("admin").password("password").roles("USER", "ADMIN");
}

在这个示例中,定义了两个用户:user 和 admin,密码都是 password

以上就是Spring Security 的基本配置。