열렬히.뛰기

코드분석 (6) : filter

Projects > 코드분석 (6) : filter

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은 주로 인증 오류 발생 시 사용되므로, 인증 관련 로직과 밀접한 연관이 있음.