회원가입 API를 구현한 뒤 가입된 사용자에 대해서 로그인 요청을 받고 가입이 된 사용자에 한해 사용자에 대한 정보를 저장하고 관리할 방법이 필요하다고 판단했습니다.
이를 구현할 수 있는 방법은 크게 세션/쿠키 방식
과 JWT 방식
을 생각해봤고 각 방식에 대한 기본 설명은 아래와 같습니다.
세션
은 서버측에서 사용자에 대한 고유 세션 ID를 발급하고 저장하여 관리하는 공간을 의미합니다.
쿠키
는 클라이언트 측에서 발급받는 세션 ID를 저장하여 이후 요청을 보낼 때 헤더에 함께 담아 보내기 위한 저장 공간을 의미합니다.
JWT(Json Web Token) 방식은 암호화된 토큰을 발행해 클라이언트에 보내고 이를 복호화함으로써 검증하는 절차를 의미합니다.
즉, 해당 토큰이 노출되면, 다른 누군가가 이를 탈취해 악의적으로 사용할 수 있다.
결론부터 말하자면 두 방식 모두 사용할 수 있는 설계를 작업하기로 했습니다.
다만 1순위로 사용할 방식을 세션/쿠키 방식
으로 결정했습니다.
이유는 토큰 방식에 비해 안정성 자체는 뛰어나단 점과 이후 Redis
를 활용할 방안을 고려중에 있기에 세션 방식을 우선적으로 사용하는 것이 합리작이라 판단했습니다.
인증 방식에 대한 교체는 충분히 발생할 수 있는 이슈라 생각했고, 객체 지향스로운 설계를 구성하기 위해 두 방식을 유연하게 교체할 수 있는 구조로 작업해보기로 했기에 두 방식에 대한 차이점을 알고 있고 상황에 맞는 방식을 활용하는 것이 좋을 것 같습니다.