Refresh Token
로그인 요청을 하고 나서, 서버에서 토큰을 프론트에거 넘겨줄 때, 토큰을 하나더 만들어 넘겨준다. 하나 더 만든 토큰을 refresh token이라고 하고 기존에 발행 했던 토큰을 access token이라고 한다.
refresh token은 access toㅏ두 이 만료 되엇을 때, access token을 다시 발행 하기 위한 용도로 써야 하기 때문에 유효기간이 더 길어야 한다.
refresh token의 필요성
Access token를 통한 인증 방식의 문제는 해킹을 당했을 때 보안이 취약하다는 점이다. 유효기간이 짧은 토큰의 겨우 그만큼 사용자는 로그인을 자주 새롭게 받아야 하므로 불편하다. 그렇다고 유효기간을 늘리면 해킹에 취약해진다.
refresh 토큰을 access token 과 같이 jwt 이다.
access token의 유효기간은 보통 2시간이고 refresh token은 2주에서 2달이다.
access token과 refresh token을 활용한 Authorization process
사용자가 로그인을 하낟.
서버에서는 인가를 한다.
인가는 아이디와 비밀버호가 맞는지 비교하는 일이다.
인가를 할때 DB를 거치지 않고 Gaurd를 통해 인가 처리를 한다.
인가 처리 시 문제가 있으면 브라우저로 에러를 반환하고, 문제가 없으면 DB와 연동하여 API처리 가 이루어진다.
Access token 과 refresh토큰이 전달된다.
access token payload를 통해 전달
refresh toekn cookie를 통해 전달
만료된 accesstoken을 첨부하여 요처을 보낸다.
accesstoken이 만료되면 refresh token으로 accestoekn을 재발급 받는 API 를 프론트에서 요처앟는 것이다.
토큰이 만료된거을 알고 restoreAccessToken를 쿠키와 함께 요청을 보낸다.
refreshToken이 만료되었을 때만 사용자가 재로그인을 하면 된다.
refreshToken을 확인하고(인가) 요청해 새로운 accesstoken을 발그해서 반환한다.
재발급된 토큰과 함께 실패한 요청에 대해 재요청을 보낸다.
social login flow