
Spring 기반 애플리케이션에서 보안을 쉽게 구현할 수 있도록 도와주는 강력한 보안 프레임워크이다. 주로 웹 애플리케이션에서 사용되며, 사용자 인증 (authentication)과 권한 부여 (authorization)를 효과적으로 관리할 수 있도록 지원한다.
간단히 설명하면 Spring Security를 사용하여 로그인 폼을 만들고, 사용자의 아이디와 비밀번호를 입력받아 인증하는 웹 애플리케이션을 만들어 볼 수 있고 권한이 있는 사용자만 접근할 수 있는 페이지를 설정하고, 권한 없는 사용자는 접근할 수 없도록 제어한다.
Spring Security 5.7.x 버전 이상
스프링 시큐리티 5.7.0-M2 부터 WebSecurityConfigurerAdapter는 deprecated(더 이상 사용되지 않음)되었다.
[참고링크]-https://spring.io/blog/2022/02/21/spring-security-without-the-websecurityconfigureradapter

클라이언트가 스프링부트(어플리케이션)로 특정한 요청을 하면 요청이 서블릿 컨테이너를 지나 서블릿 컨테이너가 가지고 있는 필터를 통과하여 스프링부트로 들어오게된다.
여기서 스프링 시큐리티를 의존성으로 추가하게 되면 필터에서 스프링 시큐리티가 요청을 가로채서 접근권한, 로그인, 특정한Role을 가지고 있는지 검증을 한다.
간단하게 특정한 경로로 요청이 오면 Controller에 도달하기전 필터에서 Security가 검증을 한다.
Security 설정을 하려면 먼저 Secutiry Config클래스를 생성해야 한다.
@Configuration //설정파일을 만들기 위한 애노테이션, Bean을 등록하기 위한 애노테이션
@EnableWebSecurity //스프링 시큐리티를 활성화하고 웹 보안 설정을 구성하는 애노테이션
@EnableWebMvc //스프링 MVC를 활성화하는 어노테이션으로, 웹 애플리케이션에 Spring Web MVC를 구성
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeRequests((authorize) -> authorize
.mvcMatchers("/", "/login", "/sign-up", "/check-email-token",
"/email-login", "/login-by-email", "/search/study").permitAll() //경로에 대해 모든 사용자 허용
.mvcMatchers(HttpMethod.GET, "/profile/*").permitAll() //GET요청의 /profile/* 경로에 대해 모든 사용자 허옹
.anyRequest().authenticated() //그 외의 요청은 인증된 사용자만 접근 허용
);
return http.build();
}
}
SecurityFilterChain securityFilterChain(HttpSecurity http)
Spring Bean등록에 대해 자세한 설명 링크: ⬇
망나니개발자 님의 [Spring] 빈 등록을 위한 어노테이션 👈
스프링 시큐리티 유튜브 강의 영상 및 출처: ⬇
개발자유미: https://www.youtube.com/watch?v=y0PXQgrkb90&list=PLJkjrxxiBSFCKD9TRKDYn7IE96K2u3C3U&index=1