# 获得 Spring 安全性
本节讨论了有关获得 Spring 安全性二进制文件所需了解的所有信息。有关如何获得源代码,请参见源代码。
# 发行版本编号
Spring 安全版本的格式为 major.minor.patch,例如:
主要的版本可能包含断开的更改。通常,这样做是为了提供与现代安全实践相匹配的改进的安全性。
小版本包含增强功能,但被视为被动更新。
补丁级别应该是完全兼容的,向前和向后,可能的例外情况是修复错误的更改。
# Maven 的用法
与大多数开源项目一样, Spring Security 将其依赖关系部署为 Maven 工件。本节中的主题提供了有关在使用 Maven 时如何使用 Spring 安全性的详细信息。
# Spring 用 Maven 引导
Spring Boot 提供了一个spring-boot-starter-security
启动器,该启动器将 Spring 与安全相关的依赖关系聚合在一起。使用启动器的最简单和首选的方法是通过使用 IDE 集成(Eclipse (opens new window),IntelliJ (opens new window),NetBeans (opens new window))或通过https://start.spring.io (opens new window)使用Spring Initializr (opens new window)。
或者,你也可以手动添加启动器,如下例所示:
例 1。 POM.xml
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
</dependencies>
由于 Spring 启动提供了一个 Maven BOM 来管理依赖版本,因此你不需要指定版本。如果你希望重写 Spring 安全版本,那么可以通过提供 Maven 属性来实现,如下例所示:
例 2。 POM.xml
<properties>
<!-- ... -->
<spring-security.version>5.6.2</spring-security.version>
</properties>
由于 Spring 安全性仅在主要版本中进行破坏更改,因此使用具有 Spring 启动的 Spring 安全性的较新版本是安全的。然而,有时你可能还需要更新 Spring Framework 的版本。你可以通过添加一个 Maven 属性来做到这一点,如下例所示:
例 3。 POM.xml
<properties>
<!-- ... -->
<spring.version>5.3.16</spring.version>
</properties>
如果使用额外的功能(例如 LDAP、OpenID 和其他功能),还需要包括适当的项目模块和依赖项。
# Maven 没有靴子
当使用 Spring 安全性而不启动 Spring 时,首选的方法是使用 Spring 安全性的 BOM,以确保在整个项目中使用 Spring 安全性的一致版本。下面的示例展示了如何做到这一点:
例 4。 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 安全性 Maven 依赖关系通常如下所示:
例 5。 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、OpenID 和其他功能),则还需要包括适当的项目模块和依赖项。
Spring 安全性是根据 Spring Framework5.3.16 构建的,但通常应该与 Spring Framework5.x 的任何较新版本一起工作。 Spring 安全性的传递依赖关系解决了 Spring Framework5.3.16,这可能会导致奇怪的 Classpath 问题,许多用户可能会对此感到不满。解决此问题的最简单方法是使用spring-framework-bom
中<dependencyManagement>
部分中的pom.xml
,如下例所示:
例 6。 POM.xml
<dependencyManagement>
<dependencies>
<!-- ... other dependency elements ... -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-framework-bom</artifactId>
<version>5.3.16</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
前面的示例确保 Spring 安全性的所有传递依赖使用 Spring 5.3.16 模块。
这种方法使用 Maven 的“物料清单”概念,并且仅在 Maven 2.0.9+ 中可用。 有关如何解决依赖关系的更多详细信息,请参见Maven’s Introduction to the Dependency Mechanism documentation (opens new window)。 |
---|
# Maven 存储库
所有 GA 版本(即以.release 结尾的版本)都部署到 Maven Central,因此不需要在 POM 中声明额外的 Maven 存储库。
如果使用快照版本,则需要确保定义了 Spring 快照存储库,如下例所示:
例 7。 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 里程碑存储库,如下例所示:
例 8。 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 安全性的详细信息。
# Spring 用 Gradle 引导
Spring 引导提供了一个spring-boot-starter-security
启动器,该启动器将 Spring 安全相关的依赖关系聚合在一起。使用启动器的最简单和首选方法是通过使用 IDE 集成(Eclipse (opens new window),IntelliJ (opens new window),NetBeans (opens new window))或通过https://start.spring.io (opens new window)使用Spring Initializr (opens new window)。
或者,你也可以手动添加启动器,如下例所示:
示例 9.build. Gradle
dependencies {
compile "org.springframework.boot:spring-boot-starter-security"
}
由于 Spring 启动提供了一个 Maven BOM 来管理依赖版本,所以不需要指定版本。如果你希望重写 Spring 安全版本,那么可以通过提供 Gradle 属性来实现,如下例所示:
示例 10.构建。 Gradle
ext['spring-security.version']='5.6.2'
由于 Spring 安全性仅在主要版本中进行破坏更改,因此使用具有 Spring 启动的 Spring 安全性的较新版本是安全的。然而,有时你可能还需要更新 Spring 框架的版本。你可以通过添加一个 Gradle 属性来做到这一点,如下例所示:
示例 11.build. Gradle
ext['spring.version']='5.3.16'
如果你使用了额外的功能(例如 LDAP、OpenID 和其他功能),则还需要包括适当的项目模块和依赖项。
# Gradle 没有靴子
当使用 Spring 安全性而不启动 Spring 时,首选的方法是使用 Spring 安全性的 BOM,以确保在整个项目中使用 Spring 安全性的一致版本。你可以通过使用依赖管理插件 Name (opens new window)来实现这一点,如下例所示:
例 12.build. Gradle
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework.security:spring-security-bom:5.6.2'
}
}
Spring 安全性 Maven 依赖性的最小集合通常如下所示:
例 13.build. Gradle
dependencies {
compile "org.springframework.security:spring-security-web"
compile "org.springframework.security:spring-security-config"
}
如果你使用了额外的功能(例如 LDAP、OpenID 和其他功能),则还需要包括适当的项目模块和依赖项。
Spring 安全性是根据 Spring Framework5.3.16 构建的,但通常应该与 Spring Framework5.x 的任何较新版本一起工作。 Spring 安全性的传递依赖关系解决了 Spring Framework5.3.16,这可能会导致奇怪的 Classpath 问题,许多用户可能会对此感到不满。解决此问题的最简单方法是在pom.xml
的<dependencyManagement>
部分中使用spring-framework-bom
。你可以通过使用依赖管理插件 Name (opens new window)来实现这一点,如下例所示:
示例 14.build. Gradle
plugins {
id "io.spring.dependency-management" version "1.0.6.RELEASE"
}
dependencyManagement {
imports {
mavenBom 'org.springframework:spring-framework-bom:5.3.16'
}
}
前面的示例确保 Spring 安全性的所有传递依赖使用 Spring 5.3.16 模块。
# Gradle 存储库
所有 GA 版本(即以.release 结尾的版本)都部署到 Maven Central,因此对于 GA 版本,使用 MavenCentral()存储库就足够了。下面的示例展示了如何做到这一点:
例 15.build. Gradle
repositories {
mavenCentral()
}
如果使用快照版本,则需要确保定义了 Spring 快照存储库,如下例所示:
示例 16.build. Gradle
repositories {
maven { url 'https://repo.spring.io/snapshot' }
}
如果使用里程碑或发布候选版本,则需要确保定义了 Spring 里程碑存储库,如下例所示:
示例 17.build. Gradle
repositories {
maven { url 'https://repo.spring.io/milestone' }
}