0


Spring Security 6.x 系列【1】基础篇之概述及入门案例

有道无术,术尚可求,有术无道,止于术。

本系列Spring Boot 版本 3.0.4

本系列Spring Security 版本 6.0.2

源码地址:https://gitee.com/pearl-organization/study-spring-security-demo

文章目录

导读

本系列基于最新

Spring Boot 3.0

+

Spring Security 6.0

版本,由浅入深,从实战到源码分析,详细讲解各种

Spring Security 

的使用技巧,适用于初学和进阶使用者。

本系列学习路线:
在这里插入图片描述

安全框架

开发软件系统时,

Web

安全非常重要,

JAVA

安全框架,大家听得最多的应该是

Spring Security 

Apache Shiro

。国产的有Sa-Token。

这些框架底层的原理都大同小异,只要学会一个,其他的上手就非常容易👊👊👊

一个功能完善的安全框架,一般需要支持以下特性:

  • 认证(Authentication):验证用户的身份
  • 授权(Authorization):验证用户的访问和权限,对已认证用户进行访问控制
  • 加密:对重要信息进行加密处理,比如密码加密
  • 会话管理:对用户认证、会话信息进行存储管理
  • 防御攻击:对常见的网络攻击进行防御

Spring Security

GitHub地址
官方文档地址

Spring Security 6.0

提供了许多新功能,并且需要

JDK 17

概述

Spring Security 

Spring 

组织提供的一个开源安全框架,目前最新的版本为

6.0.2

,基于

Spring 

开发,所以非常适合在

Spring Boot

中使用。

Spring Security

提供认证、授权、抵御常见攻击等功能,将认证授权分离,并提供了扩展点。对保护命令式(

Spring MVC

)和响应式(

Spring Webfulx

)应用程序有一流的支持,是保护基于

Spring

开发的应用程序的事实标准。

认证

Spring Security 

身份验证提供了全面的支持,身份验证是验证进行访问的主体身份。常用方法是要求用户输入用户名密码。一旦执行身份验证,就知道身份并可以执行授权

授权授权指的是验证某个用户是否有权限执行某个操作。在系统中不同用户所具有的权限是不同的。比如对某条数据来说,有的用户只能进行读取,而有的用户可以进行修改。一般系统会为不同的用户分配不同的角色,而每个角色则对应一系列的权限。

发展历史

Spring 

社区在成立后,

2003

年底开始考虑开发安全框架,最初是

Acegi

,大约一年后,

Acegi Security

成为

Spring Framework

的正式子项目。

2006年5月

Acegi Security

发布了

1.0

版, 于

2007

年底更名为

Spring Security

如今

Spring Security

拥有一个强大且活跃的开源社区,当前最新版本为

6.0.2

入门案例

1. 创建工程

Spring Boot 3.0系列【3】基础篇之使用Spring Initializr快速创建项目

使用

Spring Initializr

快速创建一个

Spring Boot 3.0

项目,可以直接选择引入

Spring Security

依赖:
在这里插入图片描述

POM

依赖坐标如下所示:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--Spring Boot 提供的 Security 启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-security</artifactId></dependency></dependencies>
spring-boot-starter-security

Spring Boot 

官方提供的启动器,提供了自动配置和依赖包管理:
在这里插入图片描述
主要包含以下几个子模块:

  • spring-security-core: 核心包,包含核心认证和访问权限功能类和接口、远程支持和基本配置API
  • spring-security-webWEB框架集成包,包含过滤器和相关的web安全基础设施代码
  • spring-security-config:包含 security 命名空间解析代码和Java配置代码

2. 运行

启动程序,

UserDetailsServiceAutoConfiguration

自动配置类,会生成一个默认随机登录密码(因为目前没有配置用户,配置后不会生成):
在这里插入图片描述

DefaultSecurityFilterChain

默认的过滤器链会打印出所有的

Filter

过滤器:
在这里插入图片描述

3. 测试

编写访问接口:

@RestControllerpublicclassTestController{@GetMapping("/test")publicObjecttest(){return"Hello Security";}}

访问测试接口,此时被重定向到默认登录页面:
在这里插入图片描述

用户名输入

user

,密码输入控制台生成的随机登录密码,登录成功后重定向到访问接口:
在这里插入图片描述
也可以在

yml

中配置一个默认的登录用户及密码:

spring:security:user:name: test
      password:123456

本文转载自: https://blog.csdn.net/qq_43437874/article/details/129727541
版权归原作者 云烟成雨TD 所有, 如有侵权,请联系我们删除。

“Spring Security 6.x 系列【1】基础篇之概述及入门案例”的评论:

还没有评论