Spring Security 기반 JWT 로그인 시스템

1. 개요

이 문서는 Spring SecurityJWT를 사용하여 로그인 요청이 처리되는 흐름을 설명합니다. 각 인증 단계 및 필터의 역할을 통해 전체 시스템에서 어떻게 인증이 이루어지는지 살펴봅니다.


https://drive.google.com/file/d/1hLsT6SeDwVKhI8o2CNuwd6cABkex85LP/view?usp=sharing

2. 로그인 프로세스 흐름

2.1 사용자가 /v1/auth/login으로 로그인 요청

2.2 Spring Security 설정 적용 (WebSecurityConfig)

필터 체인 설정

  1. CorsFilter: 외부 도메인에서의 접근을 허용하거나 차단하는 역할을 수행하며, 보안 설정에서 CORS 정책을 제어합니다. UsernamePasswordAuthenticationFilter 전에 실행되므로 인증 전에 CORS 규칙이 적용됩니다.

    .addFilterBefore(corsFilter, UsernamePasswordAuthenticationFilter.class)
    
  2. JWT 예외 처리 필터:

    .exceptionHandling(exceptionHandling -> exceptionHandling
        .accessDeniedHandler(jwtAccessDeniedHandler)
        .authenticationEntryPoint(jwtAuthenticationEntryPoint)
    )
    
  3. JWT 필터 추가:

    .with(new JwtSecurityConfig(tokenProvider), JwtSecurityConfig::getClass);
    
    ---------------------------------------------------------------------------
    //JwtSecurityConfig.java
    @Override
    public void configure(HttpSecurity httpSecurity) {
        httpSecurity.addFilterBefore(
         new JwtFilter(tokenProvider), UsernamePasswordAuthenticationFilter.class
        );
    }
    

2.3 세션 관리

2.4 로그인 엔드포인트 허용