로그인 flow

  1. 사용자가 로그인 버튼을 클릭하고 아이디와 비밀번호를 입력한다.
  2. 회원가입이 되어있는 사용자라면 뚝딱 DB에서 사용자를 조회하고, 회원가입이 되어있지 않은 사용자라면 회원가입이 되어있지 않다는 에러코드를 반환한다.
  3. 사용자 식별값(userId)를 이용해서 뚝딱 Access Token & Refresh Token을 발급한다.
  4. 클라이언트에게 토큰을 전송하는데, Access Token은 response body로, Refresh Token은 http only로 설정한 쿠키에 저장한다.

Access Token이 만료될 경우

  1. 쿠키를 확인하여 Refresh Token을 가져온다.
  2. Refresh Token의 유효성을 검증한다. 2-1. 유효한 Refresh Token이라면 클라이언트에게 토큰 재발급이 필요하다는 예외를 던진다. → 클라이언트가 토큰 재발급 요청 → Access Token 및 Refresh Token 재발급 2-2. 유효하지 않은 Refresh Token이라면 로그인이 필요하다는 예외를 던진다. → 로그인

새로운 환경에서 로그인을 시도할 경우

  1. 기존 Refresh Token을 폐기하고 새로운 토큰으로 대체한다.
  2. 유효한 토큰을 여러개 유지한다 (논의 필요)