새소식

기타

개인 전문 분야 - 강화된 JWT (Access Token / Refresh Token)

  • -

JWT 정리 위캔

토큰에 대한 간결한 정리가 포함된 위캔

강화된 JWT (Access Token / Refresh Token)

기존 JWT와의 차이점

  • JWT의 문제점은 제 3자에게 토큰을 탈취당할 경우 보안이 취약해진다는 점이다.
  • 기존 JWT 방식에서 보안을 높이기 위해 토큰의 유효기간을 단축시킬 경우 그만큼 사용자는 로그인을 더욱 자주 해줘야 하는 불편함이 있다.
  • 유효기간을 짧게하면서 보안은 향상 시키는 방법으로 기존 Access Token과 더불어 Refresh Token이라는 새로운 토큰도 발급하는 방법이 생겨났다.

- Access Token

  • 기존의 JWT에서의 Access Token과 같다.

- Refresh Token

  • Access Token과 같은 형태의 JWT이다.
  • 처음에 로그인을 완료할때 Access Token과 동시에 발급된다.
  • 긴 유효기간
  • 유효기간이 짧은 Access Token이 만료되었을때 새로 발급해주는 열쇠가 된다.

- 작동방식

  1. 사용자가 정상적으로 로그인을 시도하면, 서버로부터 Access Token과 Refresh Token을 부여받는다.
    • 이때 일반적으로 Refresh Token은 회원 DB에 저장된다.(비교적 더 안전한 저장소)
  2. 사용자가 Access Token이 만료되기까지 기존의 방식대로 api를 요청하고(Access Token은 헤더에 실어서 요청을 보낸다.) 서버 역시 기존의 방식대로 요청을 검증하여 api를 수행한다.
  3. Access Token이 만료되면 서버는 Access Token의 만료를 확인하고 권한없음 신호를 보낸다.
  4. 사용자는 Refresh Token과 Access Token을 서버로 보낸다.
  5. 서버는 Access Token이 정상적인지 확인 후, Access Token과 Refresh Token을 비교하여 정상적이라면 새로운 Access Token을 발급해준다.
  6. 2번으로 돌아간다.

- 장점

  • 기존의 방식보다 보안이 향상되었다.

- 단점

  • 구현이 복잡하다.
  • Access Token이 만료되어 새로 발급되는 과정에서 생기는 HTTP 요청 횟수가 많아 서버의 자원 낭비가 발생한다.

- 질문들

  1. Q 왜 Access Token만 사용하면 사용하면 보안이 취약한가
    • A 서버에서는 한 번 Token을 발급하고 나면 정보를 저장하지 않고 정상적인 사용자라고 인식하기 때문에 Token의 만료 시간까지 없앨 수 없다.
  2. Q Access Token이 만료되기 직전에 새로운 Access Token을 자동으로 발급 해주도록 하면 되지 않은가
    • A Access Token은 정상적인 로그인 시에만 발급된다. 정상적인 로그인은 사용자의 ID와 PW가 필요하고 이는 재로그인이 필요하다는 뜻이며 따라서 Access Token은 로그인 과정을 거치지 않으면 발급될 수 없다.
반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.