SpringSecurity安全框架 ——认证与授权
在Spring Security中,认证(Authentication)和授权(Authorization)是两个核心的安全控制机制。
认证(Authentication):
确认用户的身份。通常涉及到用户名和密码的验证。
授权(Authorization):
确认用户是否有权限进行某项操作。
以下是一个简单的Spring Security配置示例,包括认证和授权:
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.inMemoryAuthentication()
.withUser("user").password("{noop}userPassword").roles("USER")
.and()
.withUser("admin").password("{noop}adminPassword").roles("USER", "ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.antMatchers("/", "/home").permitAll()
.antMatchers("/admin/**").hasRole("ADMIN")
.antMatchers("/db/**").access("hasRole('ADMIN') and hasIpAddress('123.123.123.123')")
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login")
.permitAll()
.and()
.logout()
.permitAll();
}
}
在这个配置中:
configure(AuthenticationManagerBuilder auth)
方法定义了内存中的用户和他们的角色。configure(HttpSecurity http)
方法定义了请求的授权规则,例如哪些URL路径是公开的,哪些需要特定的角色或IP地址访问。
这个配置使用了Spring Security的表达式语言来定义权限,并且使用了表单登录。开发者可以根据实际情况调整认证和授权策略。
评论已关闭