获取 Spring Security

本节介绍如何获取 Spring Security 二进制文件。有关如何获取源代码的信息,请参阅源代码

版本编号

Spring Security 版本格式为 MAJOR.MINOR.PATCH,其中

  • 主要版本可能包含重大更改。通常,这样做是为了提供改进的安全措施以匹配现代安全实践。

  • 次要版本包含增强功能,但被视为被动更新。

  • 补丁级别应该与前后版本完全兼容,但可能存在修复错误的更改除外。

与 Maven 结合使用

与大多数开源项目一样,Spring Security 将其依赖项部署为 Maven 工件。本节中的主题描述了在使用 Maven 时如何使用 Spring Security。

使用 Maven 的 Spring Boot

Spring Boot 提供了一个spring-boot-starter-security启动器,它聚合了与 Spring Security 相关的依赖项。使用启动器的最简单且推荐的方法是使用Spring Initializr,方法是在(EclipseIntelliJNetBeans)中使用 IDE 集成或通过start.spring.io。或者,您可以手动添加启动器,如下例所示

pom.xml
<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>

由于 Spring Boot 提供了 Maven BOM 来管理依赖项版本,因此您无需指定版本。如果您希望覆盖 Spring Security 版本,可以通过提供 Maven 属性来实现

pom.xml
<properties>
	<!-- ... -->
	<spring-security.version>6.3.4</spring-security.version>
</properties>

由于 Spring Security 仅在主要版本中进行重大更改,因此您可以安全地将更新版本的 Spring Security 与 Spring Boot 一起使用。但是,有时您可能也需要更新 Spring Framework 的版本。您可以通过添加 Maven 属性来实现

pom.xml
<properties>
	<!-- ... -->
	<spring.version>6.1.14</spring.version>
</properties>

如果您使用其他功能(例如 LDAP、OAuth 2 等),则还需要包含相应的项目模块和依赖项

无 Spring Boot 的 Maven

当您在没有 Spring Boot 的情况下使用 Spring Security 时,首选方法是使用 Spring Security 的 BOM 来确保在整个项目中使用一致版本的 Spring Security。以下示例说明了如何执行此操作

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework.security</groupId>
			<artifactId>spring-security-bom</artifactId>
			<version>{spring-security-version}</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

最小的 Spring Security Maven 依赖项集通常如下例所示

pom.xml
<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-web</artifactId>
	</dependency>
	<dependency>
		<groupId>org.springframework.security</groupId>
		<artifactId>spring-security-config</artifactId>
	</dependency>
</dependencies>

如果您使用其他功能(例如 LDAP、OAuth 2 等),则还需要包含相应的项目模块和依赖项

Spring Security 基于 Spring Framework 6.1.14 构建,但通常可以与任何更新的 Spring Framework 5.x 版本一起使用。许多用户可能会遇到 Spring Security 的传递依赖项解析 Spring Framework 6.1.14 的问题,这可能会导致奇怪的类路径问题。解决此问题的最简单方法是在 pom.xml 文件的 <dependencyManagement> 部分中使用 spring-framework-bom

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-framework-bom</artifactId>
			<version>6.1.14</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 6.1.14 模块。

此方法使用 Maven 的“物料清单”(BOM)概念,并且仅在 Maven 2.0.9+ 中可用。有关如何解析依赖项的更多详细信息,请参阅 Maven 的依赖项机制简介文档

Maven 仓库

所有 GA 版本(即以 .RELEASE 结尾的版本)都部署到 Maven Central,因此您无需在 pom 中声明其他 Maven 仓库。

如果您使用 SNAPSHOT 版本,则需要确保已定义 Spring Snapshot 仓库

pom.xml
<repositories>
	<!-- ... possibly other repository elements ... -->
	<repository>
		<id>spring-snapshot</id>
		<name>Spring Snapshot Repository</name>
		<url>https://repo.spring.io/snapshot</url>
	</repository>
</repositories>

如果您使用里程碑或候选发布版本,则需要确保已定义 Spring Milestone 仓库,如下例所示

pom.xml
<repositories>
	<!-- ... possibly other repository elements ... -->
	<repository>
		<id>spring-milestone</id>
		<name>Spring Milestone Repository</name>
		<url>https://repo.spring.io/milestone</url>
	</repository>
</repositories>

Gradle

与大多数开源项目一样,Spring Security 将其依赖项部署为 Maven 工件,这允许一流的 Gradle 支持。以下主题介绍了在使用 Gradle 时如何使用 Spring Security。

使用 Gradle 的 Spring Boot

Spring Boot 提供了一个 spring-boot-starter-security 启动器,它聚合了与 Spring Security 相关的依赖项。使用启动器的最简单且首选的方法是使用 Spring Initializr,方法是在 IDE 集成中使用(EclipseIntelliJNetBeans)或通过 start.spring.io

或者,您可以手动添加启动器

build.gradle
dependencies {
	implementation "org.springframework.boot:spring-boot-starter-security"
}

由于 Spring Boot 提供了 Maven BOM 来管理依赖项版本,因此您无需指定版本。如果您希望覆盖 Spring Security 版本,可以通过提供 Gradle 属性来实现。

build.gradle
ext['spring-security.version']='6.3.4'

由于 Spring Security 仅在主要版本中进行重大更改,因此您可以安全地将更新版本的 Spring Security 与 Spring Boot 一起使用。但是,有时您可能也需要更新 Spring Framework 的版本。您可以通过添加 Gradle 属性来实现。

build.gradle
ext['spring.version']='6.1.14'

如果您使用其他功能(例如 LDAP、OAuth 2 等),则还需要包含相应的项目模块和依赖项

不使用 Spring Boot 的 Gradle

当您不使用 Spring Boot 时使用 Spring Security 时,首选方法是使用 Spring Security 的 BOM 来确保在整个项目中使用一致版本的 Spring Security。您可以使用 依赖项管理插件 来实现。

build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework.security:spring-security-bom:6.3.4'
	}
}

一个最小的 Spring Security Maven 依赖项集通常如下所示

build.gradle
dependencies {
	implementation "org.springframework.security:spring-security-web"
	implementation "org.springframework.security:spring-security-config"
}

如果您使用其他功能(例如 LDAP、OAuth 2 等),则还需要包含相应的项目模块和依赖项

Spring Security 基于 Spring Framework 6.1.14 构建,但通常可以与任何更新的 Spring Framework 5.x 版本一起使用。许多用户可能会遇到 Spring Security 的传递依赖项解析 Spring Framework 6.1.14 的问题,这可能会导致奇怪的类路径问题。解决此问题的最简单方法是在 build.gradle 文件的 dependencyManagement 部分中使用 spring-framework-bom。您可以使用 依赖项管理插件 来实现。

build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework:spring-framework-bom:6.1.14'
	}
}

前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 6.1.14 模块。

Gradle 仓库

所有 GA 版本(即以 .RELEASE 结尾的版本)都部署到 Maven Central,因此使用 mavenCentral() 仓库足以满足 GA 版本的需求。以下示例演示了如何执行此操作

build.gradle
repositories {
	mavenCentral()
}

如果您使用 SNAPSHOT 版本,则需要确保已定义 Spring Snapshot 仓库

build.gradle
repositories {
	maven { url 'https://repo.spring.io/snapshot' }
}

如果您使用里程碑或候选发布版本,则需要确保已定义 Spring Milestone 仓库

build.gradle
repositories {
	maven { url 'https://repo.spring.io/milestone' }
}