로그인 구현방식 1. 세션 기반 인증방식

1. 개념잡기

분명 HTTP 통신은 stateless 하다고 배웠는데, 어떻게 네이버에 로그인을 한 뒤, 새로고침을 해도 로그인 상태가 유지되는 것일까?

  • 세션 기반 인증 방식에서는 최초 1회 로그인 한 뒤부터는 서버에서 응답받은 세션 쿠키값이 자동으로 클라이언트의 헤더값에 설정되어 전달되기 때문에, 서버에서 요청을 한 주체를 알 수 있게 된다.

1-1. 기억하기

  • 세션 : 클라이언트와 서버의 연결이 활성화된 상태

  • 세션 ID : WAS 혹은 DB 에 저장된 클라이언트의 유니크한 ID

2. 과정 살펴보기

  1. 클라이언트는 사용자의 로그인 정보를 POST 메소드를 통해서 HTTP 으로 서버에 전달한다.

  2. 이를 확인한 서버는 로그인 정보와 일치하는 사용자를 찾았다면, 응답 헤더에 Set-Cookie 헤더값을 통해서 세션 ID 를 전달한다.

  3. 서버로부터 세션 ID 를 받은 클라이언트는 이후의 통신부터는 자동으로 헤더 쿠키값에 session ID 가 넣어진채로 통신하게 되므로, 로그인 세션이 유지되게 된다.

3. 단점

  1. WAS 에 저장할 경우, 웹 서버 메모리에 저장하게 되면, 사용자가 급격하게 늘어날 경우, 서버에 과부하를 주게 된다.

  2. DB 에 저장할 경우, 데이터베이스로부터 가져와 서버에서 Json 혹은 문자열로 만드는 과정을 통해 직렬화 및 역직렬화의 비용이 발생하게 된다. - 오버헤드!

Last updated