로그인 및 로그인 상태관리 시스템을 무엇으로 구현할 것인가

세션은 사용해봤으니까 토큰방식을 사용하고 싶은데,

passport + JWT 방식으로 로그인상태를 유지/관리 하는 어플리케이션을 구현할 수 있다.

JWT 사용시 case1) 액세스토큰만 사용

JWT 사용시 case2) 액세스토큰 + 리프레시토큰 사용

case1 case2
구현난이도
IO 비용 (응답속도와 비례할 수 있음)
토큰 탈취 가능 가능
토큰 탈취에 대한 보안 강화 낮음 높음 액세스토큰은 빠르게 만료 시킨다.
리프레시토큰은 느리게 만료 시킨다.

액세스 토큰의 탈취시 피해를 최소화 한다. but. 리프레시 토큰의 저장에대해 보안 강화 해야한다. |

구현난이도가 쉽고 프로그램 속도개선에 도움이 되는 case1을 채택하고,

보안이 약한점을 토큰의 [클라이언트 IP, 에이전트 정보] 를 사용해서 검증하는 로직을 추가해서 최대한 토큰 탈취에 대한 위험을 보완하는 방식으로 하자.

결론 >> 그럼 passport + JWT + 몽구스로 구현부터 해보자