- 엑세스 토큰 : 로컬스토리지에 저장 (15분)
- 리프레시 토큰 : 쿠키에 http only옵션 (14일)
- 로그인 로직에 세션 도입하기 (24시간=1일)
- 사용자가 로그인을 위해 회원 정보를 입력함.
- 클라이언트에서 해당 정보를 받아서 서버로 넘겨줌.
- 서버는 그 정보를 DB에 있는 정보와 조회함.
- 정보가 일치하면 서버는 세션을 생성함.
세션에는 사용자 ID와 세션 생성 시간을 저장함.
서버는 클라이언트로 액세스토큰과 리프레시토큰을 넘겨줌.
- 액세스토큰: 클라이언트에게 바로 응답으로 전송.
- 리프레시토큰: HttpOnly 옵션을 설정한 쿠키에 담아 클라이언트로 전송.
- 클라이언트는 액세스토큰을 로컬스토리지에 저장함. 리프레시토큰은 자동으로 전송되어 쿠키 안에 있음.
- 클라이언트에서 액세스토큰을 받아서 인증 요청을 함.
- 서버에서 해당 액세스토큰을 검증함.
- 액세스토큰이 유효한지 확인하고, 유효하면 요청을 처리함.
세션의 유효성을 확인함. (세션 생성 시간이 현재 시간보다 24시간 이내인지 확인).
액세스토큰이 만료됨.
- 클라이언트에서 만료된 액세스토큰 대신 리프레시토큰을 사용하여 새로운 액세스토큰을 요청함.
클라이언트는 리프레시토큰을 쿠키에서 꺼내서 서버로 넘겨줌.
- 서버는 리프레시토큰을 검증함.
- 리프레시토큰이 유효하면 새로운 액세스토큰을 발급함.
세션의 유효성을 확인함. (세션 생성 시간이 24시간 이내인지 확인).
세션이 만료된 경우, 로그아웃 처리를 하고 클라이언트에게 세션 만료 메시지를 보냄.
클라이언트는 액세스토큰을 받아서 인증 요청을 함.