取得 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 整合(EclipseIntelliJ, NetBeans)或透過 start.spring.io。或者,您可以手動新增 starter,如下列範例所示:

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 starter,它彙集了與 Spring Security 相關的相依性。使用 starter 最簡單且推薦的方法是使用 Spring Initializr,可以透過 IDE 整合(EclipseIntelliJ, NetBeans)或透過 start.spring.io

或者,您可以手動新增 starter:

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 版本。您可以使用 Dependency Management Plugin 來完成:

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.gradledependencyManagement 區段中使用 spring-framework-bom。您可以使用 Dependency Management Plugin 來完成:

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' }
}