mjeongriver

@SpringBootApplication 어노테이션의 exclude 속성은 특정 자동 설정 클래스를 제외하고 Spring Boot 애플리케이션을 구성할 때 사용됩니다. 일반적으로 이 속성은 특정 자동 설정을 비활성화하려는 경우에 사용됩니다.

SecurityAutoConfiguration 클래스는 Spring Security의 자동 구성을 활성화하는데 사용되는 자동 설정 중 하나입니다.

그런데, 때때로 Spring Security를 사용하지 않거나 커스터마이징해야 하는 경우가 있습니다.

이때 exclude 속성을 사용하여 SecurityAutoConfiguration을 비활성화할 수 있습니다.

즉, @SpringBootApplication(exclude = SecurityAutoConfiguration.class)을 사용하면 Spring Security의 자동 설정을 비활성화하고 사용자 정의된 보안 구성을 사용할 수 있습니다.

이것은 Spring Boot 애플리케이션의 보안 설정을 사용자가 직접 구성하고자 할 때 유용합니다.

 

Spring Boot 웹 애플리케이션에 Security Starter를 추가하면 자동으로 웹 보안이 적용됩니다. 이는 모든 요청에 대한 인증 요청, 기본 사용자 및 패드워드 생성 등이 포함됩니다.

이런 자동설정 역할을 하는 클래스가 SecurityAutoConfiguration 클래스 입니다. 그래서 자동 설정을 끄고자 할 때는 @SpringBootApplication 애노테이션에 SecurityAutoConfiguration 를 읽어 들이지 않도록 설정만 하면 됩니다.

 

@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class SpringBootSecurityApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBootSecurityApplication.class, args);
    }
}

 

 

자동설정을 끄면 커스텀 보안 서비스를 사용해야 한다던가 기존에 있던 시스템과 통합할 때는 유용할 수 있습니다.

그러나 여러가지로 불편한 점이 있는데, 이 상태에서 WebSecurity를 설정하려면 @EnableWebSecurity 애노테이션를 필수로 사용해야 하고, Security 설정을 개발자가 직접 모든 것을 다 해야 합니다. 또한 다른 자동 설정 클래스에서 SecurityAutoConfiguration 가 필요하다면 문제가 될 수 있습니다.

그래서 끄는 것 보다는 기본 설정을 무시하고 개발자가 지정한 설정을 우선 사용하도록 하는 것이 대부분의 경우 유용할 것입니다. 스프링 부트는 사용자 정의 클래스를 발견하면 당연하게도 자동 설정보다 우선하여 동작하게 되어있습니다.

 

참조

https://thecodinglog.github.io/spring/security/2020/01/10/disable-security-auto-config.html

 

'TIL > Spring' 카테고리의 다른 글

Principal 객체  (0) 2024.01.23
consumes와 produces의 차이  (0) 2024.01.22
빌드 관리 도구(maven, gradle의 차이)  (0) 2023.08.18
day81-spring  (0) 2023.02.09
day80-spring  (0) 2023.02.08
profile

mjeongriver

@mjeongriver

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그