반응형
스프링 시큐리티와 JWT를 적용해서 인증 및 인가 절차를 만들어서 사용하는 경우가 많습니다.
하지만 특정 URL에 대해서는 모든 접근을 허용해주어야 하는 상황도 있는데요.
예를들면, 네이버에서 뉴스를 볼 때는 유저가 로그인을 했던 안했던 무조건 볼 수 있는 것과 같은 상황입니다.
우선 JWT를 적용한 스프링 시큐리티의 인증/인가 처리 과정에서, 특정 URL을 허용해주기 위한 설정 파일의 역할은 아래와 같습니다.
참고로, 허용시켜줄 URL은 PERMIT_URL_ARRAY
에 담아놓았다고 가정하겠습니다.
1) SecurityConfiguration
SecurityFilterChain
에서 설정한PERMIT_URL_ARRAY
는 스프링 시큐리티의 기본 보안 검사에서 해당 URL들을 허용하도록 합니다.- 하지만 이 허용은 스프링 시큐리티의 기본 필터 체인에만 적용됩니다.
2) JwtFilter
의 역할
JwtFilter
는 커스텀 필터로 헤더에서 토큰을 추출해서 검증하는 역할을 합니다.SecurityFilterChain
과는 별개로 동작합니다.addFilterBefore
를 통해 필터 체인에 추가됩니다.addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class);
이 코드를 통해UsernamePasswordAuthenticationFilter.class
앞쪽에jwtFilter
를 추가했기 때문에 모든 요청은jwtFilter
를 가장 먼저 통과해야 합니다.
즉 처리 순서는
HTTP 요청 → JwtFilter → Spring Security 기본 필터들 → 컨트롤러
위와 같은 과정을 거칩니다.
따라서 만약에 SecurityConfiguration
에서 URL을 허용하더라도, JwtFilter
에서 해당 URL을 허용시키는 URL로 추가하지 않으면 JwtFilter
에서 먼저 인증 체크를 하고 차단하게 됩니다.
반응형
'방구석 컴퓨터 > 방구석 스프링' 카테고리의 다른 글
스프링과 마이바티스(MyBatis) (1) | 2024.12.02 |
---|---|
Getter도 Setter도 쓰지 말라고?? (0) | 2024.11.26 |
Lombok 생성자와 빌더 (0) | 2024.11.25 |
스프링 시큐리티 - 기본 인증 프로세스 (0) | 2024.11.21 |
JPA, JDBC (4) | 2024.11.20 |