欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《深入理解Spring Cloud与微服务构建》第7章 Spring Boot Security详解

程序员文章站 2022-05-08 10:57:33
...

1、Spring Security简介

1.1 什么是Spring Security

Spring Security是Spring Resource社区的一个安全组件,Spring Security为JavaEE企业级开发提供了全面的安全防护。安全防护是一个不断变化的目标,Spring Security通过版本不断迭代来实现这一目标。Spring Security采用“安全层”的概念,使每一层都尽可能安全,连续的安全层可以达到全面的防护。Spring Security可以在Controller层、Service层、DAO层等以加注解的方式来保护应用程序的安全。Spring Security提供了细粒度的权限控制,可以精细到每一个API接口、每一个业务的方法,或者每一个操作数据库的DAO层的方法。Spring Security提供的是应用程序层的安全解决方案,一个系统的安全还需要考虑传输层和系统层的安全,例如采用Https协议、服务器部署防火墙等。

1.2 为什么选择Spring Security

使用Spring Security有很多原因,其中一个重要原因是它对环境的无依赖性、低代码耦合性。将工程重新部署到一个新的服务器上,不需要为Spring Security做什么工作。Spring Security提供了数十个安全模块,模块与模块间的耦合性低,模块之间可以*组合来实现特定需求的安全功能,具有较高的可定制性。总而言之,Spring Security具有很好的可复用性和可定制性。

在安全方面,有两个主要的领域,一是“认证”,即你是谁;二是“授权”,即你拥有什么权限,Spring Security的主要目标就是在这两个领域。“认证”是认证主体的过程,通常是指可以在应用程序中执行操作的用户、设备或其他系统。“授权”是指决定是否允许已认证的主体执行某一项操作。

安全框架多种多样,那为什么选择Spring Security作为微服务开发的安全框架呢?JavaEE有另一个优秀的安全框架Apache Shiro,Apache Shiro在企业级的项目开发中十分受欢迎,一般使用在单体服务中。但在微服务架构中,目前版本的Apache Shiro是无能为力的。Spring Security来自Spring Resource社区,采用了注解的方式控制权限,熟悉Spring的开发者很容易上手Spring Security。另外一个原因就是Spring Security易于应用于Spring Boot工程,也是易于集成到采用Srping Cloud构建的微服务系统中。

2、Spring Boot Security与Spring Security的关系

在Spring Security框架中,主要包含了两个依赖Jar,分别是spring-security-web依赖和spring-security-config依赖,代码如下:

<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-web</artifactId>
	<version>4.1.0.RELEASE</version>
</dependency>
<dependency>
	<groupId>org.springframework.security</groupId>
	<artifactId>spring-security-config</artifactId>
	<version>4.1.0.RELEASE</version>
</dependency>
</dependencies>

Spring Boot对Spring Security框架做了封装,仅仅是封装,并没有改动Spring Security这两个包的内容,并加上了Spring Boot的起步依赖的特性。

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

进入spring-boot-starter-security的pom文件,可以发现pom文件包含了Spring Security的两个Jar包,并移除了这两个Jar包的apo功能,引入了aop的依赖,另外包含了spring-boot-starter的依赖。由此可见,spring-boot-starter-security是对Spring Security的一个封装。

转载于:https://my.oschina.net/lienson/blog/3033604