내일배움캠프 Spring 28일차 TIL

Skadi·2024년 1월 31일
0

스프링 숙련 개인과제

JWT Token과 Spring Security가 적용된 스케쥴앱 서버 제작

더 공부하게 된 내용들

  1. 스프링 Security를 사용하면 Filter에서 @Component와 @Order로 인한 적용이 불가하다.
    • SecurityConfig에서 http.addFilterBefore를 통해 주입하여 해결
  1. 필터와 리소스 접근과는 아무 관련이 없음
@Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        // CSRF 설정
        http.csrf((csrf) -> csrf.disable());

        // 기본 설정인 Session 방식은 사용하지 않고 JWT 방식을 사용하기 위한 설정
        http.sessionManagement((sessionManagement) ->
            sessionManagement.sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        );

        http.authorizeHttpRequests((authorizeHttpRequests) ->
            authorizeHttpRequests
                .requestMatchers(PathRequest.toStaticResources().atCommonLocations())
                .permitAll() // resources 접근 허용 설정
                .requestMatchers("/user/**").permitAll() // '/user/'로 시작하는 요청 모두 접근 허가
                .anyRequest().authenticated() // 그 외 모든 요청 인증처리
        );


        http.addFilterBefore(jwtAuthorizationFilter(), JwtAuthenticationFilter.class);
        http.addFilterBefore(jwtAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class);
        http.addFilterBefore(new LoggingFilter(), JwtAuthorizationFilter.class);

        return http.build();
    }
  • 위 코드에서 ("/user/**").permitAll()을 사용한다고 해서 해당 URL에 필터가 적용되지 않는 것이 아님, 해당 사항을 고려해서 필터를 구성해야한다.
    • ex ) 회원가입 페이지에서도 인가 필터가 적용되니 토큰의 여부를 확인하고 없을 경우 다음 필터로 넘어가도록 해야한다.

0개의 댓글