나의 개발일지

스프링 시큐리티 환경에서 H2 사용하기 위한 csrf 제어 코드 본문

Language/SpringBoot

스프링 시큐리티 환경에서 H2 사용하기 위한 csrf 제어 코드

사각분무기 2024. 1. 7. 15:18
public class SecurityConfig {
    @Bean
    SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        return http
                .csrf(
                        csrf -> csrf
                                .ignoringRequestMatchers("/h2-console/**")
                )
                .headers(
                        headers -> headers
                                .addHeaderWriter(
                                        new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)
                                )
                )
                .authorizeHttpRequests(
                        authorizeHttpRequests -> authorizeHttpRequests
                                .requestMatchers("/adm/**")
                                .hasRole("ADMIN")
                                .anyRequest()
                                .permitAll()
                )
                .formLogin(
                        formLogin -> formLogin
                                .loginPage("/member/login")
                                .defaultSuccessUrl("/")
                )
                .logout(
                        logout -> logout
                                .logoutUrl("/member/logout")
                                .logoutSuccessUrl("/")
                )
                .build();
    }

    @Bean
    PasswordEncoder passwordEncoder() {
        return new BCryptPasswordEncoder();
    }
}

 

FrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN)

  • 과거의 html 안에 html을 넣는 기술인 Frame이라는 방식이 현재에 와선 구시대의 방식이기 때문에 스프링 시큐리티에서 막아놓았지만 h2는 오래된 프로그램이라 Frame을 쓰기 때문에 Frame 사용을 허용하는 코드