[h2] SpringSecurity 적용 시에 h2-console 로 바로 못 들어가는 상황
로그인/ 회원가입 구현한 후에 SpringSecurity 와 JWT 를 적용하고 h2 를 들어가려고 하는데 사이트 로그인을 안하면 안들어가지더라구요?
아마 시큐리티 적용을 했을때 저희가 사이트에 대한 허용을 걸어줬을 거에요
이제 그 함수가 기억날 줄 모르겠지만 permitAll() 이란 걸 걸어줬을 텐데 코드로 보시죠
return http
.authorizeHttpRequests(auth -> auth
.requestMatchers(
new AntPathRequestMatcher("/login"),
new AntPathRequestMatcher("/signup"),
new AntPathRequestMatcher("/user"),
).permitAll() //login, signup, user 로 요청이 오면 인증/인가 없이도 접근 가능
이거 말이죠 아마 SecurityConfig.java 파일을 보시면 이런식으로 개발자가 원하는 사이트에는 로그인이 안되어 있어도 해당 경로는 가능하다. 라는 것을 보여주는 것이죠
이제 저희는 h2 콘솔에도 여기에다가 넣어줘야 합니다.
그래서 이렇게 작성을 할 수 있는 거죠
return http
.authorizeHttpRequests(auth -> auth
.requestMatchers(
new AntPathRequestMatcher("/login"),
new AntPathRequestMatcher("/signup"),
new AntPathRequestMatcher("/user"),
PathRequest.toH2Console(),
new AntPathRequestMatcher("/h2/**")
).permitAll() //login, signup, user 로 요청이 오면 인증/인가 없이도 접근 가능
이렇게 h2 콘솔을 허용하게 해주면 들어가는 데는 문제가 없으실 거에요.
하지만 또 다른 문제가 발생을 했는데요.
h2 db 에 이제 사용자 id, password 모두 정확하게 입력하여 들어갔는데 locahost:8080 서버에 연결이 안됐다. 라는 문구가 띄어져 있을 수 있는데요
이제 뭐 원인을 찾는다면 또 시큐리티의 문제인데요. 보안 강화를 위해 웹페이지 공격을 막기 위한 설정을 자동으로 해주는데 이 기능을 비활성시켜줘야 합니다. 바로 x-frame-option 헤더 기능을 비활성화 해주는 것이죠
https://lucas-owner.tistory.com/69
[Spring Security] x-frame-option 헤더 설정(iframe)
목차 개요 iframe 이란 해킹 공격 방어 방법 해결 방법 * 도메인 ~ 에서 연결을 거부 했습니다 (net::ERR_BLOCKED_BY_RESPONSE) 최근 같은 그룹사의 다른 도메인에서 iframe 으로 내가 관리하는 도메인의 화면
lucas-owner.tistory.com
간단한 설명은 위 글을 보시고 코드를 보고 해결을 하도록 하겠습니다.
http
.csrf(AbstractHttpConfigurer::disable) // 실습을 위해!!! (추후 활성화 예정)
.headers().frameOptions().disable()
.and()
.build();
이렇게 headers().frameOptions().disable() 을 해줍니다.
* 제가 and() 를 빼먹어서 이것저것 시도하다가 삽질을 좀 했는데 and() 를 사용하세요.
자 여러분 해결이 되셨나요~?