11월 21일-스프링에서 리프레시 토큰 사용하기

Yullgiii·2023년 11월 21일
0
post-thumbnail

1. 리프레시 토큰이란?

리프레시 토큰은 액세스 토큰이 만료되었을 때, 사용자의 로그인 세션을 유지하기 위해 사용하는 토큰이다. 액세스 토큰은 보안상의 이유로 짧은 만료 시간을 가지지만, 리프레시 토큰은 그보다 훨씬 긴 만료 시간을 가진다.그럼 여기서 액세스 토큰은 뭔데?

액세스 토큰이란?

액세스 토큰은 사용자가 서버에 접근하기 위해 필요한 키와 같은 역할을 한다. 사용자가 로그인을 하면 서버는 사용자의 인증 정보를 기반으로 액세스 토큰을 생성하고 이를 사용자에게 전달한다. 사용자는 이후 서버에 요청을 보낼 때마다 이 액세스 토큰을 함께 보내서 자신을 인증한다.

2. 리프레시 토큰의 필요성

액세스 토큰이 만료되면 사용자는 다시 로그인을 해야 한다. 하지만 매번 액세스 토큰이 만료될 때마다 사용자에게 로그인을 요청하는 것은 사용자 경험을 저하시킨다. 이럴 때 리프레시 토큰을 사용하면 사용자는 로그아웃하거나 장기간 비활동 상태가 아니라면 로그인을 유지할 수 있다.

3. 스프링에서의 리프레시 토큰 사용

스프링 시큐리티와 JWT를 사용하여 리프레시 토큰을 구현할 수 있다. 사용자가 로그인을 하면 액세스 토큰과 리프레시 토큰을 함께 발급한다. 그리고 사용자는 액세스 토큰을 사용하여 자원에 접근하고, 액세스 토큰이 만료되면 리프레시 토큰을 사용하여 새로운 액세스 토큰을 발급받는다.

@PostMapping("/token")
public ResponseEntity<TokenResponse> token(@RequestBody TokenRequest tokenRequest) {
    return ResponseEntity.ok(authService.createToken(tokenRequest));
}

위 코드에서는 사용자가 리프레시 토큰을 전송하면 새로운 액세스 토큰을 발급하는 엔드포인트를 구현하였다.

엑세스 토큰과 리프레시 토큰의 차이점은 무엇????

가장 중요한 액세스 토큰과 리프레시 토큰의 주요 차이점은 사용 목적과 만료 시간이다.

사용 목적

  • 액세스 토큰은 사용자가 서버의 리소스에 접근하는데 사용된다. 즉, 사용자가 인증 후 요청하는 모든 API 호출에 액세스 토큰이 필요하다.
  • 반면에, 리프레시 토큰은 새로운 액세스 토큰을 발급받는데 사용된다. 액세스 토큰이 만료되었을 때, 사용자가 로그인 상태를 유지하려면 새로운 액세스 토큰이 필요하고, 이때 리프레시 토큰이 사용된다.

만료 시간

  • 액세스 토큰은 일반적으로 짧은 만료 시간을 가진다. 이는 액세스 토큰이 탈취당하더라도 공격자가 제한된 시간 내에서만 그 토큰을 사용할 수 있도록 하기 위함이다.
  • 반면에, 리프레시 토큰은 보통 긴 만료 시간을 가진다. 이는 사용자가 자주 로그인하지 않아도 되도록 하기 위한 것이다. 리프레시 토큰이 만료되면 사용자는 다시 로그인해야 한다.
    이 두 토큰을 적절히 사용함으로써, 사용자의 편의성을 높이면서 동시에 시스템의 보안도 유지할 수 있다.
profile
개발이란 무엇인가..를 공부하는 거북이의 성장일기 🐢

0개의 댓글