Login Process

김영후·2022년 8월 18일
0

Token

로그인 요청을 하고 나서 , 서버에서 토큰을 프론트에게 넘겨줄 때, 토큰을 하나 더 만들어서 넘겨준다.

하나 더 만든 토큰을 Refresh Token이라고 하고 기존에 발행하던 토큰을 Access Token이라고 한다.

Refresh Token은 Access Token이 만료되었을 때, Access Token을 다시 발행하기 위한 용도로 쓸 것이기 때문에 Access Token보다 유효기간이 길어야 한다.



Why Refresh Token?

Access Token(JWT)를 통한 인증 방식의 문제는 해킹을 당했을 경우 보안에 취약하다는 점

유효기간이 짧은 토큰의 경우 그만큼 사용자는 로그인을 자주 해서 새롭게 토큰을 발급 받아야 하므로 불편하다.

그렇다고 유효기간을 늘리면 토큰을 해킹당했을 때 보안에 더 취약해진다.

이러한 점들을 보완하는 것이 Refresh Token

Refresh Token은 Access Token과 같은 형태의 JWT이다.

Refresh Token은 처음에 로그인을 완료 했을 때 Access Token과 함께 발급된다.

Access Token보다 긴 유효기간을 가지면서 Access Token이 만료 되었을 때 새로 발급해 주는 열쇠가 된다.

Access Token이 해킹 당하면 정보가 유출된다. 하지만 유효기간을 짧게 해두면(30분~2시간) 그 기간 안에서만 사용이 가능하기 때문에 더 안전하다.

Refresh Token의 유효기간이 만료되면, 사용자는 새로 로그인 해야 된다.

Refresh Token도 해킹될 가능성이 있기 때문에 적절한 유효기간(2주~2달) 설정이 필요하다.



Access Token & Refresh Token Authorization Process

  1. 사용자가 로그인

  2. 서버에서 사용자가 입력한 ID, PW를 회원 DB에서 값을 비교(Backend에서 Guard로 인가 처리)

  3. 로그인이 완료되면 Access Token(JWT), Refresh Token(JWT)를 발급한다.

Access Token : 해당 데이터 payload를 통해 전달한다.
Refresh Token : 쿠키를 통해 전달한다.

  1. 만료된 AccessToken을 첨부하여 요청을 보낸다.

  2. 서버가 인가를 해보면서 토큰이 만료되었음을 확인하고 에러를 반환한다.

  3. 토큰이 만료되었음을 확인하고 토큰 재발급 요청(RestoreAccessToken)을 쿠키와 함께 요청을 보낸다.

  4. 쿠키에 RefreshToken을 확인해(인가) 새로운 AccessToken을 발급해서 반환한다.

  5. 재발급된 토큰과 함께 실패한 요청에 대해 재요청을 보낸다.

  6. 정상적으로 요청에 대한 값을 반환한다.

profile
https://poagg.tistory.com/ 로 이전합니다.

0개의 댓글