티스토리 뷰
@EnableWebSecurity
@EnableWebSecurity 어노테이션은 Spring Security 프레임워크에서 제공하는 어노테이션으로, 웹 보안 기능을 활성화하는 데 사용됩니다.
WebSecurityConfigurerAdapter 구현 활성화
@EnableWebSecurity 어노테이션을 사용하면 WebSecurityConfigurerAdapter 인터페이스를 구현한 클래스가 자동으로 감지됩니다. WebSecurityConfigurerAdapter는 웹 보안 구성을 정의하는 데 사용되는 추상 클래스입니다.
스프링 시큐리티 필터 체인 활성화
@EnableWebSecurity 어노테이션을 사용하면 스프링 시큐리티 필터 체인이 자동으로 활성화됩니다.이 필터 체인은 웹 요청에 대한 보안 처리를 수행합니다.
스프링 시큐리티 설정 커스터마이징
@EnableWebSecurity 어노테이션을 사용하면 WebSecurityConfigurerAdapter를 통해 웹 보안 설정을 커스터마이징할 수 있습니다.ex)인증 방식, 권한 설정, CSRF 보호 등을 설정할 수 있습니다.
@EnableWebSecurity 어노테이션 사용 예시 코드
@Configuration // 이 클래스가 Spring의 Configuration 클래스임을 나타냅니다.
@EnableWebSecurity // 웹 보안 기능을 활성화합니다.
public class SecurityConfig extends WebSecurityConfigurerAdapter { // WebSecurityConfigurerAdapter를 상속받아 웹 보안 설정을 커스터마이징합니다.
@Override
protected void configure(HttpSecurity http) throws Exception {
// HTTP 보안 설정을 구성합니다.
http
.authorizeRequests() // 요청에 대한 권한 설정을 시작합니다.
.antMatchers("/", "/home").permitAll() // "/" 및 "/home" 경로에 대해 모든 사용자 접근을 허용합니다.
.antMatchers("/admin/**").hasRole("ADMIN") // "/admin/**" 경로에 대해 "ADMIN" 권한이 필요합니다.
.anyRequest().authenticated() // 그 외 모든 요청에 대해 인증된 사용자만 접근할 수 있습니다.
.and()
.formLogin() // 폼 기반 로그인을 설정합니다.
.loginPage("/login") // 로그인 페이지를 "/login"으로 설정합니다.
.permitAll() // 로그인 페이지에 대해 모든 사용자 접근을 허용합니다.
.and()
.logout() // 로그아웃 설정을 합니다.
.permitAll(); // 로그아웃 기능에 대해 모든 사용자 접근을 허용합니다.
}
@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
// 인메모리 사용자 인증 설정을 합니다.
auth
.inMemoryAuthentication()
.withUser("user").password("{noop}password").roles("USER") // "user" 사용자 추가
.and()
.withUser("admin").password("{noop}password").roles("ADMIN"); // "admin" 사용자 추가
}
}
@EnableWebSecurity 어노테이션을 사용하여 웹 보안 기능을 활성화합니다.
WebSecurityConfigurerAdapter를 상속받아 SecurityConfig 클래스를 정의하고, HTTP 보안 설정을 구성합니다.
/ 및 /home 경로에 대해 모든 사용자 접근을 허용하고, /admin/** 경로에 대해 "ADMIN" 권한이 필요하도록 설정합니다.
그 외 모든 요청에 대해 인증된 사용자만 접근할 수 있도록 설정합니다.
폼 기반 로그인 페이지를 "/login"으로 설정하고, 모든 사용자가 접근할 수 있도록 허용합니다.
로그아웃 기능에 대해 모든 사용자 접근을 허용합니다.
인메모리 사용자 인증 설정을 통해 "user" 및 "admin" 사용자를 추가합니다.