로그인 flow
- 사용자가 로그인 버튼을 클릭하고 아이디와 비밀번호를 입력한다.
- 회원가입이 되어있는 사용자라면 뚝딱 DB에서 사용자를 조회하고, 회원가입이 되어있지 않은 사용자라면 회원가입이 되어있지 않다는 에러코드를 반환한다.
- 사용자 식별값(userId)를 이용해서 뚝딱 Access Token & Refresh Token을 발급한다.
- 클라이언트에게 토큰을 전송하는데, Access Token은 response body로, Refresh Token은 http only로 설정한 쿠키에 저장한다.
- 클라이언트 쪽의 credentials을 true로 설정해준다.
- https 적용 이후에는 secure 설정을 해준다.
Access Token이 만료될 경우
- 쿠키를 확인하여 Refresh Token을 가져온다.
- Refresh Token의 유효성을 검증한다.
2-1. 유효한 Refresh Token이라면 클라이언트에게 토큰 재발급이 필요하다는 예외를 던진다. → 클라이언트가 토큰 재발급 요청 → Access Token 및 Refresh Token 재발급
2-2. 유효하지 않은 Refresh Token이라면 로그인이 필요하다는 예외를 던진다. → 로그인
- Refresh Token의 기간은 14일로 설정
새로운 환경에서 로그인을 시도할 경우
- 기존 Refresh Token을 폐기하고 새로운 토큰으로 대체한다.
- 유효한 토큰을 여러개 유지한다
(논의 필요)