BE/Java

Springboot3 + SpringSecurity + H2 403

jjuni_96 2024. 6. 24. 10:00
728x90

문제

SpringSecurity를 적용한 이후 이전까지 잘 접속되던 h2 콘솔에 접속이 안되고 403 에러가 나왔다.

h2 콘솔 관련 filter 설정을 안해서 그런것 같다고 생각은 하였지만 간단하게 해결되지 않아서 해당 기록을 정리하려고 작성함

 

 

에러 확인

- 처음 필터에 console을 추가하지 않았던 경우에 접속 페이지부터 403이 나왔다.

 

 

 

filter 적용 1

단순히 config에서 설정만 해주면 될 것으로 판단해서 아래와같이  Security에 한줄만 추가했다.

httpSecurity.authorizeHttpRequests(config -> config
        // h2 접속 설정
        .requestMatchers(PathRequest.toH2Console()).permitAll()
        ...
        ).permitAll()
        .anyRequest().authenticated());

메인페이지까지 접속이 잘 되서 오케이 해결!! 인줄 알았지만... 왠걸..

 

두번째 문제

 

안에 표기되는 내용들이 죄다 403.... 방법을 좀 찾아보니 H2은 iframe으로 되어있어서 아래와같은 설정을 추가해줘야한다고 함!

 

filter 적용 2

// DB 드라이버 클래스 이름 (h2 사용 시 security 충돌 해결 위해)
@Value("${spring.datasource.driver-class-name}")
private String springDatasourceDriverClassName;


...

httpSecurity.authorizeHttpRequests(config -> config
        // h2 접속 설정
        .requestMatchers(PathRequest.toH2Console()).permitAll()
        ...
        ).permitAll()
        .anyRequest().authenticated());




// DB 드라이버 클래스 이름이 h2일 경우, h2 관련 옵션 추가
if (springDatasourceDriverClassName.equals("org.h2.Driver")) {
    httpSecurity.headers(config -> config.frameOptions(frameOptionsConfig -> frameOptionsConfig.sameOrigin()));
}

 

해당 설정 적용 이후 잘 작동함!

 

 

 

 

 

 

 

 

 

 

refs

https://velog.io/@dbtmdgks7897/Spring-Boot-Jwt-3-%EA%B5%AC%ED%98%84-%ED%9A%8C%EC%9B%90%EA%B0%80%EC%9E%85-%EB%A1%9C%EA%B7%B8%EC%9D%B8

 

Spring Boot - Jwt (3) 구현 - 회원가입, 로그인

일단 전문일단 Jwt를 구현하기 전 간단하게 회원가입 기능을 구현하자.혹시 403에러가 뜨면 보통 securityConfig 설정이 잘못돼있다.화면 구현Controller 구현localhost:8080 접속.포트를 바꿔놓거나 SecurityCo

velog.io

 

728x90
반응형
LIST