Refresh Token

이연중·2021년 9월 14일
0

BASIC

목록 보기
2/4
post-custom-banner

개념


Access Token이 만료되었을 때, Refresh Token을 이용해 재인증의 과정없이 Access Tokne을 새로 발급해준다.
Access Token의 유효기간을 길게하면 보안에 취약해진다.(탈취 당하기 쉬움)
그래서 Access Token의 유효기간은 짧게하여 공격 면적을 줄이고, Refresh Token의 유효기간을 길게 설정해 보안의 취약점을 보완한다.
Refresh Token은 서버 상에서 관리한다.(서버상에서 삭제, 재발급 가능)

장단점


  • 장점: Access Token만을 사용했을 때보다 보안성이 높다.(공격 면적을 줄이는데 의의가 있는것 같다.)
  • 단점: 구현이 복잡하며, Access Token을 새로 발급하는 과정에서 Http 요청 횟수가 늘어나 자원 낭비가 발생한다.

Refresh Token을 이용한 로그인 Flow


  1. 사용자가 로그인을 한다.
  2. 서버는 사용자에 대한 검증을 수행하고 올바른 사용자라면, Access Token과 Refresh Token을 발급한다.(Refresh Token은 서버에서 보관한다.)
  3. 클라이언트는 서버로부터 토큰 세트를 받는다.
  4. 클라이언트는 Access Token을 이용해 데이터를 요청한다.
  5. 서버는 Access Token을 검증하고 유효한 토큰이면 데이터를 제공한다.
  6. 클라이언트는 요청한 데이터를 받는다.
  7. 또 다시, 클라이언트에서 데이터를 요청한다.(만료된 Access Token으로)
  8. 서버는 Access Token이 만료되었음을 확인하고 클라이언트에 이에 대한 응답을 보낸다.
  9. 토큰이 유효하지 않다는 응답을 받은 클라이언트는 Refresh Token을 주며, 토큰 Refresh를 요청한다.
  10. 서버는 Refresh Token이 유효한지 확인한다.(Refresh Token이 만료되었는지, 서버에 저장된 Refresh Token과 일치하는 것인지)
  11. 유효하다면, 새로운 Access Token을 발급해준다.

참고

https://velog.io/@daybreak/Access-Token-Refresh-Token
https://blog.ull.im/engineering/2019/02/07/jwt-strategy.html
https://auth0.com/docs/security/tokens/refresh-tokens

profile
Always's Archives
post-custom-banner

0개의 댓글