Access Token과 Refresh Token

김민서·2024년 5월 22일
0

데브캠프 과제

목록 보기
6/6

토큰 기반 인증 시스템에서 자주 사용되는 토큰 유형인 Access Token과 Refresh Token에 대해 알아보자.

Access Token

사용자나 애플리케이션이 API에 접근할 수 있도록 인증을 제공하는 짧은 수명의 토큰. 특정 리소스에 대한 접근 권한을 부여하고, 서버에서 인증 및 권한 부여를 위해 사용된다.

Refresh Token

Refresh Token은 Access Token을 재발급하는 데 사용되는 긴 수명의 토큰. 사용자가 다시 로그인하지 않고도 새로운 Access Token을 발급받을 수 있도록 한다.

Access Token vs Refresh Token

Access Token접근에 관여하는 토큰으로, 보다 짧은 유효기간을 가지고, Refresh Token재발급에 관여하는 토큰으로, 보다 긴 유효기간을 가진다.

Refresh Token은 Access Token의 만료 시간이 지나면 새로운 Access Token을 발급받기 위해 사용된다.

사용 예

  1. 사용자 로그인: 사용자가 로그인하면 서버는 Access Token과 Refresh Token을 발급한다.
    2.API 요청: 클라이언트는 Access Token을 사용하여 보호된 리소스에 접근한다.
  2. 토큰 만료: Access Token이 만료되면 클라이언트는 Refresh Token을 사용하여 새로운 Access Token을 요청한다. (사용 예: 사용자의 잦은 로그아웃 방지)
  3. 토큰 갱신: 서버는 Refresh Token을 검증하고 새로운 Access Token과 (필요시) 새로운 Refresh Token을 발급한다.

보안 측면에서 두 토큰의 비교

토큰 구조 차이

Refresh Token은 단순 문자열 형식으로, 사용자 정보나 권한 정보가 포함되어 있지 않다. 하지만 Access Token은 일반적으로 JWT 형식으로, 사용자 정보나 권한 정보 등이 포함되기 때문에 탈취되면 더 위험할 수 있다.

유효기간 차이

일반적으로 Access Token은 유효 기간이 짧기 때문에 그만큼 탈취 위험이 낮아서 보안성이 높다고 할 수 있고, Refresh Token은 유효 기간이 길기 때문에 그만큼 탈취 위험이 높아서 보안성이 낮다고 할 수 있다.

토큰 탈취 시 영향 차이

하지만, Access Token이 탈취되면 해당 토큰을 통해 직접 정보에 접근할 수 있기 때문에 오히려 Access Token의 보안성은 낮다고 할 수 있다. 반면, Refresh Token은 누군가에 의해 탈취되더라도 그 누군가는 Access Token에 직접 접근할 수 없다. (이런 상황에서 악의적인 사용자에 의한 재발급을 막기 위해 Refresh Token을 통해 Access Token을 재발급 받기 위한 별도의 인증 과정이 존재) 그리고 정상적인 사용자는 Refresh Token으로 새로운 Access Token을 재발급하면 된다.

토큰 탈취에 대한 대응책

Refresh Token Rotation

OAuth에서 제시한 기술로, 사용자의 개입 없이 Access Token을 자동으로 갱신하여 보안성을 높일 수 있다.

1. Access Token 자동 갱신

  • Refresh Token을 사용하여 Access Token을 자동으로 갱신한다.
  • 사용자의 개입 없이 백그라운드에서 토큰을 갱신할 수 있다.

2. Refresh Token 정기적 교체

  • Refresh Token도 함께 정기적으로 교체된다.
  • Refresh Token이 탈취되더라도 악용될 수 있는 기간을 최소화할 수 있다.

3. 여러 개의 토큰 동시 유효화

  • 새로운 Refresh Token을 발급할 때마다 이전에 사용되던 Refresh Token을 버리지 않고 보관하여 여러 개의 토큰이 동시에 유효하도록 한다.
  • 사용자가 여러 API에 접근해야 할 경우, 각 API에 대한 고유한 Access Token을 발급받을 수 있어 보안성이 향상된다.
  • 특정 Refresh Token이 탈취되더라도 다른 Refresh Token을 사용할 수 있다.

매번 새로운 Access Token을 발급받을 때마다 Refresh Token을 변경하여 새로운 토큰을 사용하거나, 새로운 Refresh Token을 발급할 때마다 이전에 사용되던 Refresh Token을 버리지 않고 보관하여 여러 개의 토큰이 동시에 유효하도록 하는 방법

결론

보안 측면에서는 Refresh Token이 Access Token보다 더 안전하다고 볼 수 있고, 두 토큰을 함께 사용하면 보안성과 사용자 편의성을 모두 높일 수 있다.

0개의 댓글

관련 채용 정보