获取 Spring Security
本节介绍如何获取 Spring Security 二进制文件。有关如何获取源代码,请参阅 源代码。
版本编号
Spring Security 版本的格式为 MAJOR.MINOR.PATCH,其中
-
MAJOR 版本可能包含重大更改。通常,这些更改是为了提供改进的安全性以匹配现代安全实践。
-
MINOR 版本包含增强功能,但被视为被动更新。
-
PATCH 级别应与向前和向后完全兼容,但修复错误的更改除外。
与 Maven 一起使用
与大多数开源项目一样,Spring Security 将其依赖项部署为 Maven 工件。本节中的主题介绍了在使用 Maven 时如何使用 Spring Security。
Maven 中的 Spring Boot
Spring Boot 提供了一个 spring-boot-starter-security
starter,它聚合了与 Spring Security 相关的依赖项。使用 starter 最简单且首选的方法是使用 Spring Initializr,方法是使用 IDE 集成(在 (Eclipse 或 IntelliJ、NetBeans)中或通过 start.spring.io。您也可以手动添加 starter,如下例所示
<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 属性来实现
<properties>
<!-- ... -->
<spring-security.version>6.3.0</spring-security.version>
</properties>
由于 Spring Security 仅在主要版本中进行重大更改,因此你可以将 Spring Security 的较新版本与 Spring Boot 安全地结合使用。但是,有时你可能还需要更新 Spring Framework 的版本。你可以通过添加 Maven 属性来执行此操作
<properties>
<!-- ... -->
<spring.version>6.1.7</spring.version>
</properties>
如果你使用附加功能(例如 LDAP、OAuth 2 等),你还需要包含相应的 项目模块和依赖项。
不使用 Spring Boot 的 Maven
当你使用不带 Spring Boot 的 Spring Security 时,首选方法是使用 Spring Security 的 BOM,以确保在整个项目中使用 Spring Security 的一致版本。以下示例演示如何执行此操作
<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 依赖项集通常如下例所示
<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.7 构建,但通常应与 Spring Framework 5.x 的任何较新版本配合使用。许多用户可能会遇到 Spring Security 的传递依赖项解析 Spring Framework 6.1.7 的问题,这会导致奇怪的类路径问题。解决此问题的最简单方法是在 pom.xml
的 <dependencyManagement>
部分中使用 spring-framework-bom
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>6.1.7</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 6.1.7 模块。
此方法使用 Maven 的“物料清单”(BOM)概念,并且仅在 Maven 2.0.9+ 中可用。有关如何解析依赖项的更多详细信息,请参阅 Maven 的依赖项机制简介文档。 |
Maven 存储库
所有 GA 版本(即以 .RELEASE 结尾的版本)都部署到 Maven Central,因此你无需在 pom 中声明其他 Maven 存储库。
如果你使用 SNAPSHOT 版本,则需要确保已定义 Spring Snapshot 存储库
<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 存储库,如下例所示
<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 Security 相关依赖项的 spring-boot-starter-security
starter。使用 starter 最简单且首选的方法是使用 Spring Initializr,通过 IDE 集成(在 (Eclipse 或 IntelliJ、NetBeans)中)或通过 start.spring.io。
或者,你可以手动添加 starter
dependencies {
implementation "org.springframework.boot:spring-boot-starter-security"
}
由于 Spring Boot 提供了一个 Maven BOM 来管理依赖项版本,因此无需指定版本。如果你希望覆盖 Spring Security 版本,可以通过提供 Gradle 属性来实现
ext['spring-security.version']='6.3.0'
由于 Spring Security 仅在主要版本中进行重大更改,因此你可以安全地在 Spring Boot 中使用较新版本的 Spring Security。但是,有时你可能还需要更新 Spring Framework 的版本。可以通过添加 Gradle 属性来实现
ext['spring.version']='6.1.7'
如果你使用附加功能(例如 LDAP、OAuth 2 等),你还需要包含相应的 项目模块和依赖项。
不使用 Spring Boot 的 Gradle
当你不在 Spring Boot 中使用 Spring Security 时,首选的方法是使用 Spring Security 的 BOM 以确保在整个项目中使用一致的 Spring Security 版本。你可以使用 依赖项管理插件 来实现
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework.security:spring-security-bom:6.3.0'
}
}
一个最小的 Spring Security Maven 依赖项集通常如下所示
dependencies {
implementation "org.springframework.security:spring-security-web"
implementation "org.springframework.security:spring-security-config"
}
如果你使用附加功能(例如 LDAP、OAuth 2 等),你还需要包含相应的 项目模块和依赖项。
Spring Security 针对 Spring Framework 6.1.7 构建,但通常应适用于任何较新版本的 Spring Framework 5.x。许多用户可能会遇到 Spring Security 的传递依赖项解析 Spring Framework 6.1.7 的问题,这会导致奇怪的类路径问题。解决此问题的最简单方法是在 build.gradle
的 dependencyManagement
部分中使用 spring-framework-bom
。你可以使用 依赖项管理插件 来实现
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework:spring-framework-bom:6.1.7'
}
}
前面的示例确保 Spring Security 的所有传递依赖项都使用 Spring 6.1.7 模块。
Gradle 存储库
所有 GA 版本(即以 .RELEASE 结尾的版本)都部署到 Maven Central,因此使用 mavenCentral()
存储库对于 GA 版本来说就足够了。以下示例演示如何实现
repositories {
mavenCentral()
}
如果你使用 SNAPSHOT 版本,则需要确保已定义 Spring Snapshot 存储库
repositories {
maven { url 'https://repo.spring.io/snapshot' }
}
如果您使用里程碑或候选版本,则需要确保已定义 Spring 里程碑存储库
repositories {
maven { url 'https://repo.spring.io/milestone' }
}