> 技术文档 > 最新Spring Security实战教程(一)初识Spring Security安全框架_spring authorization server

最新Spring Security实战教程(一)初识Spring Security安全框架_spring authorization server

在这里插入图片描述

🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
🌞《Spring Boot》专栏主要介绍我们日常工作项目中经常应用到的功能以及技巧,代码样例完整
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

2025最新Spring Security实战教程(一)初识Spring Security

  • 前言
  • 什么是Spring Security?
  • 同类框架对比
  • Spring Security典型应用场景
    • 传统Web应用安全
    • 前后端分离架构
    • 微服务安全网关
  • 快速搭建安全环境
    • ❶ 创建Spring Boot项目
    • ❷ 测试安全访问
    • ❸ 实现URL身份验证
  • 结语

前言

随着Web应用和微服务架构的普及,作为JAVA开发者如何保证系统免受各种安全威胁(如未经授权的访问、数据泄露、跨站请求伪造等)成为一个我们必须要解决的问题。

Spring Security 作为Spring 生态系统中的核心组件,通过提供认证(Authentication)与授权(Authorization)和针对常见攻击等一系列安全功能,为开发者构建安全稳定的应用提供了强有力的支持。

什么是Spring Security?

在这里插入图片描述
官方文档:https://docs.spring.io/spring-security/reference/index.html

Spring Security是一个基于Spring框架的强大安全解决方案,它为应用提供了一整套安全服务,主要包括以下几个方面:

  • 认证(Authentication): 确定访问者身份的过程。Spring Security通过多种方式(如表单登录、Basic认证、OAuth2等)实现用户身份验证。
  • 授权(Authorization): 根据用户身份和权限确定资源访问级别。开发者可以通过配置或注解的方式,灵活地控制不同用户对不同资源的访问权限。
  • 防护机制: 包括防止跨站请求伪造(CSRF)、点击劫持等攻击手段,保障应用在网络攻击面前的稳定性。

这种以拦截器和过滤器链为核心的设计,使得Spring Security能够在请求到达业务逻辑之前,先进行安全检查,从而构建出一层坚固的防护屏障。

同类框架对比

说到安全框架,我们就不得不提另外一个轻量级的安全管理框架 Apache Shiro ,它有三个核心组件:Subject, SecurityManagerRealms , Shiro 的相关内容大家可以自行学习,这里不做过多介绍了

下面博主总结两个框架的一些对比:

特性 Spring Security Apache Shiro 学习曲线 较陡峭 易上手 功能完整性 ★★★★★ ★★★☆☆ Spring生态集成 原生支持 需要适配 微服务支持 OAuth2/JWT 需自行扩展 社区活跃度 极高 一般

通过上述的对比图,可以总结出:

  • Spring Security是一个重量级的安全管理框架;Shiro则是一个轻量级的安全管理框架
  • Spring Security 上手稍有难度,Shiro 的配置和使用比较简单
  • Shiro 依赖性低,不需要任何框架和容器,可以独立运行
  • 如果你的项目基于Spring容器,那么优先推荐Spring Security

Spring Security典型应用场景

传统Web应用安全

通过配置实现URL级权限控制

@Configuration@EnableWebSecuritypublic class WebSecurityConfig { @Bean public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception { http .authorizeHttpRequests(auth -> auth .requestMatchers(\"/admin/**\").hasRole(\"ADMIN\") .anyRequest().authenticated() ) .formLogin(form -> form .loginPage(\"/login\") .permitAll() ); return http.build(); }}

前后端分离架构

  • JWT令牌自动校验
  • 无状态会话管理
  • 跨域安全配置(CORS)

微服务安全网关

资源服务器配置示例

spring: security: oauth2: resourceserver: jwt: issuer-uri: http://auth-server:9000

快速搭建安全环境

以博主本机环境为例

JDK 17+
Spring Boot 3.4.3
Maven 3.9+
IDE(IntelliJ IDEA或VS Code)

为了方便大家学习给大家提供一个官方代码案例地址:
https://github.com/spring-projects/spring-security-samples/tree/main

❶ 创建Spring Boot项目

使用 start.spring.io 生成项目,勾选以下依赖:
在这里插入图片描述

<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-security</artifactId> </dependency></dependencies>

❷ 测试安全访问

创建测试控制器,我们希望访问 /public 无需验证身份,访问 /private 需要用户登录

@RestControllerpublic class DemoController { @GetMapping(\"/public\") public String publicApi() { return \"无需认证的公开接口\"; } @GetMapping(\"/private\") public String privateApi() { return \"需要登录的私有接口\"; }}

现在我们不管访问哪一个接口地址,均会跳出一个登陆页
在这里插入图片描述
账号默认 user ,密码由Spring Security 自动帮我们生成,观察控制台
在这里插入图片描述

❸ 实现URL身份验证

通过上述测试要求,目前我们访问 /public 还是会出现登录要求,接下来我们创建一个配置类,以实现这个需求

@Configurationpublic class BasicSecurityConfig { // 配置安全策略 @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http. authorizeHttpRequests(authorize -> authorize .requestMatchers(\"/public/**\").permitAll() .anyRequest().authenticated() ) .formLogin(withDefaults()) .logout(withDefaults()); return http.build(); }}

现在我们继续访问 /public 发现已经不再需要身份验证了,可以直接访问测试
在这里插入图片描述
访问 /private 需要登录验证,登陆后即可访问
在这里插入图片描述

上述配置文件中

requestMatchers(“/public/**”).permitAll() 表明放行public访问路径下所有接口
formLogin(withDefaults()) 采用默认的登录处理
logout(withDefaults()) 采用默认的登出处理

结语

本章节主要带领大家认识Spring Security安全框架,并构建一个简单的 Spring Boot + Spring Security 的项目让大家有一个大致了解。

在接下来的专栏中,我们将逐步深入 Spring Security 的各个技术细节,带你从入门到精通,全面掌握这一安全技术的方方面面。欢迎继续关注!

下一章节:最新Spring Security实战教程(二)表单登录定制到处理逻辑的深度改造


在这里插入图片描述