Refresh Token

Purple·2022년 3월 7일
0

TIL

목록 보기
72/73

1. JWT는 statelss

JWT는 stateless한 방식으로 서버측에서 이 토큰을 가지고 있는 클라이언트가 정말 클라이언트가 맞는지 확인할 수 없다는 문제점이 있다.

2. Access token의 보완책, Refresh token

이에 대한 보안책으로 refresh token이라는 추가 토큰을 활용할 수 있다. refresh token은 사용자 인증이 아닌 새로운 access token을 생성하는 용도로만 사용한다.

refresh token이 있어 access token의 유효기간을 짧게 설정할 수 있다. -> 만약의 경우 access token이 탈취되더라도 짧은 기간이 지나면 사용 할 수 없다.
정상적인 클라이언트라면 access token의 유효 기간이 지나가더라도 refresh token을 사용하여 새로운 access token을 부여받아 사용할 수 있다.

3. Refresh token탈취를 막을 수 있는 방법은?

  • RTR (Refresh Token Rotation) : RTR로 refresh token을 한번만 이용하게 할 수 있다. refresh token이 사용 될 때마다 새로운 access token과 refresh token을 발급하여 이전에 발급된 token들은 사용이 불가하다.

  • refresh token이 1회 이상 사용된다면 무언가 잘못됐다는것을 감지하여, 즉시 기존의 refresh token을 무효화시킨다. 이로 인해 하위의 refresh token들도 무효화되며 token체인이 더이상 유효하지 않게 된다. 즉, RTR을 사용하면 도난당한 refresh token의 사용을 감지할 수 있다.

  • 그렇지만 여타의 보안책 처럼 이 방법 또한 마법처럼 모든것을 안전하게 해주지는 않는다. 사용자가 발급은 받았지만 아직 사용하지 않은 refresh token을 해커가 탈취한다면 막을 방법이 없기 때문이다.

참고자료: An in-depth look at refresh tokens in the browser

profile
다시 보면, 더 많은 것들이 보인다.

0개의 댓글