lottie
Seungjun's blog
blog
Spring Security: 1. Configuration

1. Configuration

Boot (with Maven)

Boot는 Spring Security 관련 종속성을 Spring-boot-starter를 통해 제공합니다.

<dependencies>
	<!-- ... other dependency elements ... -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-security</artifactId>
	</dependency>
</dependencies>

Boot는 종속성 버전을 관리하기 위해 Maven BOM을 제공하므로 버전을 지정할 필요가 없습니다.

Spring Security 버전을 재정의하려면 Maven 속성을 제공하여 다음과 같이 할 수 있습니다.

<properties>
	<!-- ... -->
	<spring-security.version>6.2.2</spring-security.version>
</properties>

Spring Security는 주요 릴리스에서만 변경 사항을 변경하므로 Boot를 사용하여 최신 버전의 Spring Security를 안전하게 사용할 수 있습니다. 그러나 때로는 Spring Framework 버전도 업데이트해야 할 수도 있습니다. 이렇게 할 수 있습니다.

<properties>
	<!-- ... -->
	<spring.version>6.1.4</spring.version>
</properties>

LDAP, OAuth 2 등과 같은 추가 기능을 사용하는 경우 적절한 프로젝트 모듈 및 종속성도 포함해야 합니다.

Boot (with Gradle)

build.gradle

dependencies {
	implementation "org.springframework.boot:spring-boot-starter-security"
}

Maven Without Boot

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.4에 기반하여 구축되지만 일반적으로 최신 버전의 Spring Framework 5.x에서 작동해야 합니다.

많은 사용자가 Spring Security의 과도적 종속성으로 인해 Spring Framework 6.1.4가 해결되므로 이상한 클래스 경로 문제가 발생할 수 있습니다.

이를 해결하는 가장 쉬운 방법은 pom.xml의 섹션 내에서 spring-framework-bom을 사용하는 것입니다.

<dependencyManagement>
	<dependencies>
		<!-- ... other dependency elements ... -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-framework-bom</artifactId>
			<version>6.1.4</version>
			<type>pom</type>
			<scope>import</scope>
		</dependency>
	</dependencies>
</dependencyManagement>

앞의 예시는 Spring Security의 모든 과도적 종속성이 spring 6.1.4 모듈을 사용하도록 보장합니다.

Gradle Without Boot

Boot 없이 Spring Security를 사용할 때 선호되는 방법은 Spring Security의 BOM을 사용하여 전체 프로젝트에서 일관된 버전의 Spring Security가 사용되도록 하는 것입니다.

이렇게 하려면 Dependency Management Plugin을 사용해야 합니다.

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

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