스프링은 인기 있는 자바 기반 프레임워크 중 하나로, 안전한 웹 애플리케이션을 만들 때 흔히 사용됩니다. 스프링 시큐리티는 스프링 기반의 보안 프레임워크로, 웹 애플리케이션의 보안 관련 기능을 제공합니다. JWT (Json Web Token)은 정보를 안전하게 전달하기 위한 개방형 표준 (RFC 7519)으로, 안전하게 정보를 서명하여 JSON 형태로 전달할 수 있습니다.
이번 글에서는 스프링 시큐리티와 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를 사용하여 안전한 웹 애플리케이션을 구축하는 방법에 대해 알아보았습니다. 감사합니다.