글을 쓰게 된 이유
로그인 구현을 위해 사용되는 대표적인 두 방식인 JWT와 Session방식을 알아보기 위해.
Session
Session 방식은 다음과 같은 순서대로 작동한다.
- Client가 로그인 정보(id, password)를 Server에 보냄.
- Sever는 Session정보를 저장(메모리, 데이터베이스 등)하고 Session ID를 쿠키에 저장한 상태로 Client에게 return.
- Client가 Session ID를 Cookie에 저장한 채로 Server에 요청을 보냄.
- 서버는 Client가 저장한 Session ID가 저장되어있는지 확인. 저장되있다면 인증됨.
장점
- 세션에 저장된 정보를 통해 어떤 사용자가 접속했는지 알 수 있다.
- 아직 만료되지 않은 Session을 강제로 만료시킬 수 있다. (저장된 Session정보를 제거함으로써)
단점
- user수가 많을 경우 서버에 부하가 갈 수 있다.
- 로드 밸런서 사용시 추가적인 구현이 필요하다.
JWT(JSON Web Token)