▶ JwtSecurityConfig 클래스
더보기
@RequiredArgsConstructor
public class JwtSecurityConfig extends
SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
private final TokenProvider tokenProvider;
@Override
public void configure(HttpSecurity http) {
http.addFilterBefore(
new JwtFilter(tokenProvider),
UsernamePasswordAuthenticationFilter.class
);
}
}
▷ JwtSecurityConfig 클래스 해석
@RequiredArgsConstructor
public class JwtSecurityConfig extends
SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity> {
private final TokenProvider tokenProvider;
...
}
- @RequiredArgsConstructor: Lombok의 어노테이션으로, final로 선언된 필드를 포함하는 생성자를 자동으로 생성한다. 이 클래스의 TokenProvider를 생성자 주입 방식으로 사용할 수 있도록 한다.
- public class JwtSecurityConfig extends SecurityConfigurerAdapter<DefaultSecurityFilterChain, HttpSecurity>: JwtSecurityConfig 클래스는 Spring Security의 SecurityConfigurerAdapter를 상속받아, HTTP 보안 구성을 정의한다. 여기서 DefaultSecurityFilterChain과 HttpSecurity는 제네릭 타입으로, Spring Security에서 보안 설정을 위해 사용되는 클래스다.
- private final TokenProvider tokenProvider;: JWT를 생성하고 검증하는 기능을 제공하는 TokenProvider 객체를 필드로 선언한다. 이 필드는 final로 선언되어 초기화 이후 변경할 수 없다.
▶ configure 메소드
@Override
public void configure(HttpSecurity http) {
http.addFilterBefore(new JwtFilter(tokenProvider),
UsernamePasswordAuthenticationFilter.class);
}
- @Override: SecurityConfigurerAdapter의 configure 메소드를 재정의한다. 이 메소드는 HttpSecurity 객체를 사용하여 보안 설정을 정의하는 데 사용된다.
- HttpSecurity http: Spring Security의 HTTP 요청에 대한 보안 설정을 구성하는 객체다.
- http.addFilterBefore(...): HttpSecurity에 필터를 추가한다. 이 메소드는 지정한 필터를 다른 필터보다 먼저 실행되도록 설정한다.
- new JwtFilter(tokenProvider): JwtFilter의 새 인스턴스를 생성한다. 이 필터는 요청에서 JWT를 추출하고 검증하는 역할을 다.
- UsernamePasswordAuthenticationFilter.class: JWT 필터가 UsernamePasswordAuthenticationFilter보다 먼저 실행되도록 지정한다. 이는 JWT 인증이 사용자 이름과 비밀번호로 인증하기 전에 이루어져야 함을 의미한다.
'개인 코드 분석' 카테고리의 다른 글
스프링 시큐리티 Jwt: jwt.TokenProvider (0) | 2024.11.05 |
---|---|
스프링 시큐리티 Jwt: jwt.SecurityConfig (0) | 2024.11.05 |
스프링 시큐리티 Jwt: jwt.JwtFilter (0) | 2024.11.05 |
스프링 시큐리티 Jwt: jwt.JwtAuthenticationEntryPoint (0) | 2024.11.05 |
스프링 시큐리티 Jwt: jwt.JwtAccessDeniedHandler (0) | 2024.11.05 |