세션 동작 원리

개발하는 구황작물·2024년 4월 24일
0

회사에서 인프라 엔지니어 직원분이 본인이 설정한 네트워크 Timeout 시간보다 로그인 유지 시간이 짧아 도움을 요청하셨습니다.

원인

원인은 간단했습니다.

세션을 찾는데 사용하는 sessionID는 웹 브라우저의 쿠키에 저장이 되어있으므로

네트워크 타임아웃과 관련없이 쿠키 내부의 session ID 의 유효기간이나 쿠키의 시간이 끝나버리면 네트워크가 얼마나 길게 설정되든 세션을 찾지 못하니깐 로그인 유지가 되지 않았던 것이었습니다.

(사실 누구나 바로 쿠키나 세션 문제를 먼저 떠올렸겠지만 간과하신 부분인것 같습니다)

세션 동작 원리

그렇다면 세션은 어떤 방식으로 사용자를 기억하는 것일까요?

  1. 클라이언트가 처음으로 서버로 접속을 한다.
  2. 서버는 클라이언트를 인증하고 세션을 만든다.
  3. 서버는 세션ID를 쿠키에 넣어서 클라이언트에게 전달한다.

여기서 전달하는 쿠키는 우리가 쿠키 창에서 자주 보는 jsessionId를 예시로 들 수 있습니다.

사실 쿠키에 세션ID를 전달하는 방법은 서버가 클라이언트ID를 추적하는 방법 중 하나입니다. 이외에도 hidden form fields 모드, SSL모드, URL Rewriting 모드 등이 있습니다

hidden form fields : html 폼 형식에 세션ID를 <hidden> 태그에 숨겨 전달
URL Rewriting 모드: GET 방식으로 URL 뒤에 정보를 붙여 전송
SSL 모드 : SSL로 통신을 암호화 하는 방법

4, 5. 클라이언트가 세션ID가 담긴 쿠키를 가지고 접근하면 서버는 이를 확인하고 접근을 허용합니다.

profile
어쩌다보니 개발하게 된 구황작물

0개의 댓글