사용자 회원가입 정보 입력.
유효한 데이터가 들어왔다면 회원가입 처리(DB 등록)
사용자 정보와 권한이 들어가 있는 Access 토큰과 Refresh 토큰 발급
(이때 Refresh 토큰은 DB에 저장한다.)
클라이언트는 두 종류의 토큰을 받는다.
이후 사용자가 데이터를 요청할 때마다 Access 토큰을 동봉하여 보낸다.
access token과 refresh token 모두가 만료
된 경우access token은 만료됐지만, refresh token은 유효
한 경우access token은 유효하지만, refresh token은 만료
된 경우access token과 refresh token 모두가 유효
한 경우Tip
[refresh token을 검증하여 access token 재발급]
클라이언트(쿠키, 웹스토리지)에 저장되어있는 refresh token과 서버 DB에 저장되어있는 refresh token 일치성을 확인한 뒤 access token 재발급한다.
[access token을 검증하여 refresh token 재발급]
access token이 유효하다라는 것은 이미 인증된 것과 마찬가지니 바로 refresh token 재발급한다.
서버는 사용자로부터 전달된 Access 토큰이 유효한지만 판단한다(어자피 사용자의 권한과 정보는 토큰에 자체적으로 있다.)
Access 토큰이 유효하면 사용자의 요청을 처리해서 반환해준다.
이때, 유효기간이 짧은 Access 토큰이 만료됐다고 해보자.
사용자는 만료된 Access 토큰으로 데이터 요청을 보낸다.
서버에서는 토큰에 대한 유효성 검사를 통해 만료된 토큰임을 확인한다.
클라이언트에게 "너의 토큰은 만료되었으니 갱신하기위해 Refresh 토큰을 보내라" 라고 응답한다.
클라이언트는 Access 토큰 재발급을 위해 Access 토큰과 Refresh 토큰을 전송한다.
전달받은 Refresh 토큰이 그 자체로 유효한지 확인하고, 3번에서 DB에 저장해 두었던 원본 Refresh 토큰과도 비교하여 같은지 확인한다.
유효한 Refresh 토큰이면 Access 토큰을 재발급 해준다.
만약 Refresh 토큰도 만료됐다면 로그인을 다시하고 Access 토큰과 Refresh 토큰을 새로 발급해준다.