Spring Security の入手

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

リリース番号

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

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

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

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

Maven での使用

ほとんどのオープンソースプロジェクトと同様に、Spring Security はその依存関係を Maven アーティファクトとしてデプロイします。このセクションのトピックでは、Maven を使用するときに Spring Security を使用する方法について説明します。

Spring Boot と Maven

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

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.3</spring-security.version>
</properties>

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

pom.xml
<properties>
	<!-- ... -->
	<spring.version>6.1.12</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.12 に対してビルドされますが、通常、Spring Framework 5.x の新しいバージョンで動作するはずです。多くのユーザーは、Spring Security の推移的な依存関係が Spring Framework 6.1.12 を解決するという事実に反する可能性があります。これにより、奇妙なクラスパスの問題が発生する可能性があります。これを解決する最も簡単な方法は、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.12</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

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

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

Maven リポジトリ

すべての GA リリース(つまり、.RELEASE で終わるバージョン)は Maven Central にデプロイされるため、pom で追加の Maven リポジトリを宣言する必要はありません。

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

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 マイルストーンリポジトリが定義されていることを確認する必要があります。

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 を使用する方法について説明します。

Spring Boot と Gradle

Spring Boot は、Spring Security 関連の依存関係を集約する spring-boot-starter-security スターターを提供します。スターターを使用するための最も簡単で推奨する方法は、(Eclipse または IntelliJ (英語) NetBeans [GitHub] (英語) )または start.spring.io を介した IDE 統合を使用して Spring Initializr (英語) を使用することです。

または、スターターを手動で追加することもできます。

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.3'

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

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

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

Spring Boot なしの Gradle

Spring Boot なしで Spring Security を使用する場合、推奨される方法は、Spring Security の BOM を使用して、プロジェクト全体で Spring Security の一貫したバージョンが使用されるようにすることです。依存関係管理プラグイン [GitHub] (英語) を使用することによってそうすることができます:

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

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

依存関係の最小限の 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.12 に対してビルドされますが、通常、Spring Framework 5.x の新しいバージョンで動作するはずです。多くのユーザーは、Spring Security の推移的な依存関係が Spring Framework 6.1.12 を解決するという事実に反する可能性があります。これにより、奇妙なクラスパスの問題が発生する可能性があります。これを解決する最も簡単な方法は、build.gradle の dependencyManagement セクション内で spring-framework-bom を使用することです。依存関係管理プラグイン [GitHub] (英語) を使用することによってそうすることができます:

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

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

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

Gradle リポジトリ

すべての GA リリース(つまり、.RELEASE で終わるバージョン)は Maven Central にデプロイされるため、GA リリースには mavenCentral() リポジトリを使用するだけで十分です。次の例は、その方法を示しています。

build.gradle
repositories {
	mavenCentral()
}

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

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

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

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