1. JwtAuthenticationFilter
역할:
- JWT 기반의 인증 처리 필터. 각 요청에 대해 토큰을 검증하고, 유효한 토큰이 존재하면 해당 사용자를 인증함.
- Spring Security에서 필터 체인 중 매 요청마다 실행되는 필터 (OncePerRequestFilter).
주요 기능:
- 토큰 유효성 검사:
- jwtUtils.extractAccessToken으로 액세스 토큰 추출.
- 추출된 토큰을 유효성 검사 (validateToken).
- 만료된 토큰인지 확인 후, 만료 시 OAuthException 발생.
- 토큰이 유효하면 **사용자 정보(UserDetails)**를 가져와서 인증을 설정 (authenticationService.setAuthentication).
- 예외 처리: 유효하지 않은 토큰, 만료된 토큰 및 토큰 미존재 시 예외를 발생시키며, OAuthException을 사용.
- 연관 패키지:
- JwtUtils: 토큰 생성, 추출, 유효성 검사 등의 JWT 관련 작업을 수행하는 유틸리티.
- CustomUserDetailsService: 사용자 정보를 로드하는 서비스. UserDetails 객체를 반환하여 Spring Security 인증 과정에 사용됨.
- ‘AuthenticationService: 인증 설정을 담당하는 서비스로, 인증이 완료된 후 SecurityContextHolder에 사용자의 인증 정보를 설정.
- RedisService: Redis에서 리프레시 토큰을 조회하는 데 사용되며, Redis에 저장된 토큰 정보와 비교하여 검증.
- 관련된 다른 영역:
- auth 패키지: JwtUtils, CustomUserDetails, CustomUserDetailsService, AuthenticationService 모두 인증 관련 기능을 제공.
- exception 패키지: 잘못된 인증 요청에 대해 OAuthException을 발생시켜 예외 처리.
2. JwtExceptionFilter
- 역할:
- 필터 체인에서 발생하는 JWT 관련 예외 처리를 담당하는 필터.
- JwtAuthenticationFilter에서 발생하는 예외를 잡아 응답으로 반환함.
- 주요 기능: 필터 체인 내에서 발생하는 OAuthException을 캐치하여, HTTP 응답 코드와 메시지를 클라이언트에 전송.
- 연관 패키지: exception.auth.OAuthException: JWT 인증 과정에서 발생하는 예외를 처리하며, 해당 예외를 클라이언트에 전달.
- 관련된 다른 영역:
- auth 패키지: OAuthException은 주로 인증 오류 발생 시 사용되므로, 인증 관련 로직과 밀접한 연관이 있음.