현재까지 따라왔다면, 바로 실행하면 이상한 과정을 거치게 된다.
1. 로그인이 생겼다
이렇게 로그인이 생겼는데, 이는 Spring Security에서 기본적으로 제공하는 로그인 기능으로, 여기에 아이디와 비밀번호를 쳐야한다.
근데 회원가입을 안했잖아??
요런식으로 콘솔을 찾아보면 비밀번호가 알려지는데 아이디에 user, 비밀번호에 여기 부분을 붙여넣으면 된다. 그러면 되냐고?
안된다.
이 부분을 조금 더 설명을 해야할 것 같다.
Swagger UI를 우리가 쓰는 이유는, API 명세서를 자동으로 만들어줄 수 있다는 장점이 있고, 조금 더 정리된 상태에서 내가 만든 기능들을 확인할 수 있기 때문이다.
그런데 Spring Security는 우리가 설정하지 않으면, 만들어둔 프로젝트의 모든 페이지를 보안화시킨다. 즉 회원권한을 확인하게 된다.
Swagger에서 모든 Url을 확인하고 자동적으로 동작해주어야 하는데, 필터 체인에 대한 기본적인 설정이 없기 때문에, 동작하는데 문제가 있는 것이다.
문제는 원래는 WebSecurityConfigurerAdapter를 extends했던 방식으로 공부를 했었는데, 이게 deprecated, 즉 이제 안쓰게 되었다.
그래서 블로그를 쓰며 나도 공부한다는 생각으로 다른 방식으로 프로젝트를 만들어보려고 한다.
@EnableWebSecurity
@RequiredArgsConstructor
public class SecurityConfig{
@Bean
public WebSecurityCustomizer webSecurityCustomizer() {
return (web) -> web.ignoring().antMatchers("/ignore1", "/ignore2");
}
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
http.authorizeHttpRequests((authz) -> authz.anyRequest().authenticated())
.httpBasic(withDefaults());
return http.build();
}
}
이러한 클래스를 만들어주었다.
이제 한번 써왔으면 이에 대해 머리속으로 정리를 해봐야겠다.
일단 메서드는 두개로 이루어져 있다.
webSecurityCustomizer, filterChain
시큐리티의 필터 체인 구조와 동작 방식에서 일부분을 가져와 다듬어 주는 방식이다.
일단 @Bean이 붙어있기에 설정에 해당하는 객체들을 불러가 동작할 것이다.
여기에서 filterChain부분에서 모든 요청에 대한 인증을 만든다.
webSecurityCustomizer부분에서 특정 주소를 검증하지 않고 무시할 수 있다.
여기에 임시로
"/api/test/getTest"
를 넣으면 해당 주소는 로그인 없이도 접근할 수 있게 된다.
또한, 모든 요청이 들어올 때 어떻게 처리해야 할지 정해주었다.
filterChain에서 http.~~부분을 보면, 모든 요청에 대해서 권한을 인증하고 처리하게 만들어져있다.
이를 통해, 모든 요청에 대한 응답방식을 정해둔 것이다. (이제야 시작과 끝의 링크를 하나 달아둔 것이다)
이제 다시 스웨거를 돌려보면 아까같지는 않지만 로그인 창이 뜬다.
로그인을 하면,
정상적으로 창이 나오는 것을 알 수 있다.
다음부터는 로그인 과정, jwt토큰을 정리해보아야 겠다.
'스프링 공부 > 게시판 프로젝트 만들기' 카테고리의 다른 글
[스프링] 6. SecurityUtil 예외처리를 커스텀 해보자(부제: 2단계, 리스폰스를 이용해 예외처리하기) (0) | 2023.01.02 |
---|---|
[스프링] 5. SecurityUtil 예외처리를 커스텀 해보자(부제: 1단계, Response만들어주기) (0) | 2023.01.02 |
[스프링] 4. SecurityConfig에 대한 유틸 추가하기 (0) | 2023.01.01 |
[스프링] 2. swagger ui 설정하기(1) (0) | 2022.12.28 |
[스프링] 1. CORS 설정해주기 (0) | 2022.12.28 |