Spring Security の入手

このセクションでは、Spring Security バイナリを取得する方法について説明します。ソースコードの入手方法については、ソースコードを参照してください。

リリース番号

Spring Security バージョンは、次のような MAJOR.MINOR.PATCH としてフォーマットされています。

  • メジャーバージョンには、重大な変更が含まれる場合があります。通常、これらは最新のセキュリティ慣行に合わせてセキュリティを改善するために行われます。

  • マイナーバージョンには拡張機能が含まれていますが、パッシブアップデートと見なされます。

  • PATCH レベルは、バグを修正する変更の例外を除いて、完全に互換性があり、前方および後方にある必要があります。

使用方法

ほとんどのオープンソースプロジェクトと同様に、Spring Security は依存関係を Maven 成果物としてデプロイするため、Maven と Gradle の両方と互換性があります。次のセクションでは、Spring Boot とスタンドアロンの使用例を示しながら、Spring Security をこれらのビルドツールと統合する方法を説明します。

Spring Boot

Spring Boot は、Spring セキュリティ関連の依存関係を集約する spring-boot-starter-security スターターを提供します。スターターを使用する最も簡単で推奨する方法は、IDE 統合(Eclipse または IntelliJ (英語) NetBeans [GitHub] (英語) )または start.spring.io を使用して Spring Initializr (英語) を使用することです。または、次の例に示すように、スターターを手動で追加することもできます。

  • Maven

  • Gradle

pom.xml
<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>
build.gradle
dependencies {
	implementation "org.springframework.boot:spring-boot-starter-security"
}

Spring Boot は依存関係のバージョンを管理するために Maven BOM を提供するため、バージョンを指定する必要はありません。Spring Security バージョンをオーバーライドする場合は、次に示すようにビルドプロパティを使用してオーバーライドできます。

  • Maven

  • Gradle

pom.xml
<properties>
	<!-- ... -->
	<spring-security.version>6.4.2</spring-security.version>
</properties>
build.gradle
ext['spring-security.version']='6.4.2'

Spring Security はメジャーリリースでのみ互換性を破る変更を行うため、Spring Security の新しいバージョンを Spring Boot で安全に使用できます。ただし、場合によっては、Spring Framework のバージョンも更新する必要があります。これを行うには、次のようにビルドプロパティを追加します。

  • Maven

  • Gradle

pom.xml
<properties>
	<!-- ... -->
	<spring.version>6.2.1</spring.version>
</properties>
build.gradle
ext['spring.version']='6.2.1'

追加機能(LDAP、OAuth 2 など)を使用する場合は、適切なプロジェクトモジュールと依存関係も含める必要があります。

スタンドアロンの使用箇所 (Spring Boot なし)

Spring Boot を使用せずに Spring Security を使用する場合は、プロジェクト全体で一貫したバージョンの Spring Security が使用されるように、Spring Security の BOM を使用することをお勧めします。

  • Maven

  • Gradle

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>
build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework.security:spring-security-bom:6.4.2'
	}
}
Spring は Gradle に Dependency Management Plugin [GitHub] (英語) を提供します

最小限の Spring Security Maven 依存関係のセットは、通常、次の例のようになります。

  • Maven

  • Gradle

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>
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.2.1 に対してビルドされますが、一般的には Spring Framework 5.x の新しいバージョンでも動作するはずです。多くのユーザーは、Spring Security の推移的な依存関係が Spring Framework 6.2.1 を解決するという事実に遭遇する可能性があります。これは、奇妙なクラスパスの問題を引き起こす可能性があります。これを解決する最も簡単な方法は、pom.xml の <dependencyManagement> セクション内または build.gradle の dependencyManagement セクション内で spring-framework-bom を使用することです。

  • Maven

  • Gradle

pom.xml
<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-framework-bom</artifactId>
			<version>6.2.1</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>
build.gradle
plugins {
	id "io.spring.dependency-management" version "1.0.6.RELEASE"
}

dependencyManagement {
	imports {
		mavenBom 'org.springframework:spring-framework-bom:6.2.1'
	}
}
Spring は Gradle に Dependency Management Plugin [GitHub] (英語) を提供します

上記の例は、Spring Security のすべての推移的な依存関係が Spring 6.2.1 モジュールを使用することを保証します。

このアプローチは、Maven の「部品表」(BOM)コンセプトを使用しており、Maven 2.0.9+ でのみ使用できます。依存関係の解決方法の詳細については、Maven の依存性メカニズムドキュメントの導入 [Apache] (英語) を参照してください。

Maven リポジトリ

すべての GA リリース [GitHub] (英語) は Maven Central にデプロイされるため、ビルド構成で追加の Maven リポジトリを宣言する必要はありません。

Gradle の場合、GA リリースには mavenCentral() リポジトリを使用すれば十分です。

build.gradle
repositories {
	mavenCentral()
}

SNAPSHOT バージョンを使用する場合は、Spring スナップショットリポジトリが定義されていることを確認する必要があります。

  • Maven

  • Gradle

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>
build.gradle
repositories {
	maven { url 'https://repo.spring.io/snapshot' }
}

マイルストーンまたはリリース候補バージョンを使用する場合、次の例に示すように、Spring マイルストーンリポジトリが定義されていることを確認する必要があります。

  • Maven

  • Gradle

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>
build.gradle
repositories {
	maven { url 'https://repo.spring.io/milestone' }
}