Spring Security Filter에서의 JWT 로그인 처리 방식

song yuheon·2023년 9월 4일
0

Spring

목록 보기
45/93
post-thumbnail

전체적인 흐름



Spring Security의 활용 범위 내에서, Filter를 이용한 로그인 인증 처리는 꽤 중요한 부분을 차지한다.


WebSecurityConfig 클래스를 통한 Security Filter 설정

아래의 코드는 로그인 인증 처리를 위한 필터 추가의 중심이 되는 부분이다.

// 핵심
http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.class);
http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
// 전체 WebSecurityConfig 파일
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
    // CSRF 설정 비활성화
    http.csrf((csrf) -> csrf.disable());

    // 기본 세션 방식 대신 JWT 방식 사용 설정
    http.sessionManagement((sessionManagement) ->
            sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
    );

    http.authorizeHttpRequests((authorizeHttpRequests) ->
            authorizeHttpRequests
                    .requestMatchers("/api/user/**").permitAll() // 사용자 관련 API 접근 허용
                    .requestMatchers(HttpMethod.GET).permitAll() // GET 메소드 요청 모두 허용
                    .anyRequest().authenticated() // 나머지 요청은 인증 필요
    );

    http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.class);
    http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
    return http.build();
}

Spring Security의 필터 체인에 사용자 정의 필터를 추가하는 설정

Spring Security의 필터 체인에 사용자 정의 필터를 추가하는 설정


JwtAutorizationFilter 구현

JwtAuthorizationFilter


JwtAuthenticationFilter

JwtAuthenticationFilter


profile
backend_Devloper

0개의 댓글