Spring Security详解(定义作用及使用实例)

Spring Security详解(定义作用及使用实例)-mikechen

Spring Security 是一个安全框架,它提供了一系列的安全机制,下面我就来详解Spring Security @mikechen

Spring Security定义

Spring Security是一个开源的安全框架,主要用于认证和授权,它基于Spring框架,提供了一组能够集成到任何Spring应用程序中的安全性服务。

 

Spring Security作用

Spring Security主要用于对应用程序进行身份验证和授权,提供了一系列的安全性服务,包括:

  • 访问控制:控制用户对不同资源的访问权限;
  • 认证:验证用户身份是否合法;
  • 授权:确定用户是否被允许执行特定操作;
  • Session管理:管理用户的Session信息,包括过期时间、并发控制等;
  • 密码加密:将用户密码进行加密处理,增加安全性。

 

Spring Security使用

1.添加Spring Security的依赖

<!-- Spring Security 核心模块 -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>5.5.0</version>
</dependency>

<!-- Spring Security Web模块,用于支持Web应用程序安全 -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
    <version>5.5.0</version>
</dependency>

<!-- Spring Security配置支持 -->
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
    <version>5.5.0</version>
</dependency>

 

2.配置Spring Security

在Spring配置文件中,可以配置Spring Security的相关属性,例如认证方式、权限控制、Session管理等。

<beans:beans xmlns="http://www.springframework.org/schema/security"
    xmlns:beans="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
        http://www.springframework.org/schema/security
        http://www.springframework.org/schema/security/spring-security-5.5.xsd">

    <!-- 配置认证方式 -->
    <authentication-manager>
        <authentication-provider>
            <user-service>
                <user name="user" password="{noop}password" authorities="ROLE_USER" />
            </user-service>
        </authentication-provider>
    </authentication-manager>

    <!-- 配置权限控制 -->
    <http>
        <intercept-url pattern="/admin/**" access="ROLE_ADMIN" />
        <form-login />
        <logout />
    </http>

</beans:beans>

 

3.使用Spring Security

创建一个安全配置类,并在其中定义需要保护的资源。

@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .authorizeRequests()
                .antMatchers("/", "/home").permitAll()
                .anyRequest().authenticated()
                .and()
            .formLogin()
                .loginPage("/login")
                .permitAll()
                .and()
            .logout()

 

4.运行应用程序并测试

启动应用程序,并访问需要保护的资源/admin/**,此时会弹出一个基本身份验证的窗口,输入用户名和密码,即可访问受保护的资源。

Spring Security详解(定义作用及使用实例)-mikechen

 

Spring Security原理

Spring Security的核心原理是使用一系列的过滤器链对请求进行处理,过滤器链是由许多过滤器(Filter)组成的。

如下图所示:

Spring Security详解(定义作用及使用实例)-mikechen

每个过滤器负责不同的安全性功能,如用户认证、用户授权、会话管理、跨站点请求伪造防护等等。

在过滤器链中,最核心的是SecurityFilterChain,它是一个过滤器链的集合,每个SecurityFilterChain对象包含一个或多个过滤器,并匹配特定的请求。

如下图所示:

Spring Security详解(定义作用及使用实例)-mikechen

Spring Security的另一个核心概念是SecurityContextHolder,它用于在当前线程中存储和访问SecurityContext对象,SecurityContext对象是Spring Security的核心数据结构,包含了当前用户的安全性信息,如用户的认证状态、权限等等。

总之,Spring Security通过一系列的过滤器链和安全性相关的核心概念来实现安全性保护,其核心是SecurityFilterChainSecurityContext

以上就是Spring Security的详解,更多Spring内容请查看:Spring教程(史上最全图文详解)

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法