잘쓰던 H2 데이터베이스가 갑자기 Spring boot + Spring Security와 연동하니 작동을 하지 않았다.
Spring Security 에서 H2 데이터 베이스 콘솔에 접근을 차단 한 것이다.
이 문제를 해결하기 위해서
다음과 같은 Spring Security 설정을 진행하였다.
- H2 데이터베이스 콘솔 url("/h2-console/*") 요청에 대한 허용
- CSRF 중지
- X-Frame-Options in Spring Security 중지
코드로 보자면
http.authorizeRequests().antMatchers("/h2-console/*").permitAll()
http.csrf().disable()
http.headers().frameOptions().disable()
이러한 문제때문에 고생하고 있을 분들을 위해 정보 공유차 이 글을 쓴다.
3개의 의견 from SLiPP
좋은 정보 공유네요. 처음에 spring security 적용하면 csrf 때문에 멘붕 상태에 빠지는 경우가 많은데 빠르게 해결했네요.
.csrf().requireCsrfProtectionMatcher(new AntPathRequestMatcher("!/h2-console/**")) .and().headers().addHeaderWriter(new StaticHeadersWriter("X-Content-Security-Policy","script-src 'self'")).frameOptions().disable()
저 같은 경우는 이렇게 쓰고 있네요. csrf를 모두 꺼버리는 부분이 불편하신 분은, 위 코드의 첫줄처럼 해보시는 것도 좋을 것 같습니다.
저같은 경우에 h2-console이 결국 로컬개발에서만 사용될거라서 로컬모드와 그외 모드로 나눠서 시큐리티 설정이 먹히도록 작업하고 있습니다.
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.