[스프링] 스프링 시큐리티와 JWT(Json Web Token)

스프링은 인기 있는 자바 기반 프레임워크 중 하나로, 안전한 웹 애플리케이션을 만들 때 흔히 사용됩니다. 스프링 시큐리티는 스프링 기반의 보안 프레임워크로, 웹 애플리케이션의 보안 관련 기능을 제공합니다. JWT (Json Web Token)은 정보를 안전하게 전달하기 위한 개방형 표준 (RFC 7519)으로, 안전하게 정보를 서명하여 JSON 형태로 전달할 수 있습니다.

이번 글에서는 스프링 시큐리티와 JWT를 함께 사용하는 방법에 대해 알아보겠습니다.

목차

  1. 스프링 시큐리티 설정
  2. JWT 토큰 생성 및 인증

1. 스프링 시큐리티 설정

먼저, 스프링 시큐리티를 설정해야 합니다. WebSecurityConfigurerAdapter를 상속받은 설정 클래스를 작성하고, @EnableWebSecurity 어노테이션을 추가하여 스프링 시큐리티를 활성화합니다.

@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.csrf().disable()
            .authorizeRequests()
            .antMatchers("/api/authenticate").permitAll()
            .anyRequest().authenticated();
    }
}

위의 예제에서는 "/api/authenticate" 엔드포인트는 인증을 거치지 않고 접근할 수 있도록 허용하고, 다른 모든 요청은 인증을 거쳐야 합니다.

2. JWT 토큰 생성 및 인증

이제 JWT 토큰을 생성하고 검증하는 기능을 구현해야 합니다. io.jsonwebtoken.Jwts 클래스를 사용하여 토큰을 생성하고, 유효성을 검증할 수 있습니다.

String token = Jwts.builder()
                .setSubject(username)
                .setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME))
                .signWith(SignatureAlgorithm.HS512, SECRET_KEY)
                .compact();

토큰을 검증하기 위해서는 io.jsonwebtoken.Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(token) 메서드를 사용합니다.

이제 스프링 시큐리티와 JWT를 함께 사용하여 안전한 웹 애플리케이션을 만들 수 있습니다. 더 많은 정보는 스프링 시큐리티와 JWT에 대한 공식 문서를 참조하시기 바랍니다.

참고 자료

이상으로, 스프링 시큐리티와 JWT를 사용하여 안전한 웹 애플리케이션을 구축하는 방법에 대해 알아보았습니다. 감사합니다.