JAN's History
JWT는 무엇이고 어디에 쓰일까? 본문
쿠키, 세션 로직
1. web에서 최초 요청을 합니다.
2. 서버에서 쿠키와 세션 ID (ABCD) 를 생성하고 세션 저장소에 기록해둡니다.
3. html header에 쿠키와 세션 ID(ABCD)를 같이 return합니다.
4. web에서는 응답받은 쿠키 세션 ID (ABCD) 를 가지고 있습니다.
5. 그리고 두번째 요청할 때 부터는 web 자체에서 쿠키와 세션 ID (ABCD) 를 가지고 갑니다.
6. 서버는 DB에서 쿠키 세션 ID (ABCD) 가 있는지 확인만 합니다. (없으면 새로 만들어요)
➡️즉, 세션 ID는 최초 요청시에 생성하고 그 이후부터는 세션 ID (ABCD) 를 web에서 들고옵니다.
세션 ID가 사라질 때
1. 서버에서 세션 값을 삭제할 때
2. 사용자가 브라우저를 닫을 때
3. 시간이 만료될 때 (보통 30분)
세션은 언제 사용될까?
보통 로그인 요청, 즉 인증할 때 사용이 됩니다.
위 사진에 있는 로직과 같이
클라이언트에서 서버에세 세션 ID를 받고, 그 이후 유저정보를 요청하거나 로그인을 요청할 때에
세션 저장소에서 값을 확인하고, 값이 있다면 DB에 접근해 유저정보를 가져오는 등의 로직이 계속 반복됩니다.
세션의 단점
클라이언트가 서버에게 요청할 때 클라이언트가 백만명이라면 ??
즉, 동시 접속자 수가 많아지는데 서버가 감당하지 못한다면 서버의 수를 늘려서 로드 밸런싱을 맞추게됩니다.
그러나 이때 클라이언트 A가 서버 1에 로그인 요청을해서 세션을 만들었는데 로드 밸런싱이 되어 서버 2로 클라이언트 A가 가는 순간, 서버 2에는 최초 로그인이라 세션값이 없어지게 됩니다.
이를 위해 최초로 로그인 한 유저는 같은 서버에만 되도록 가는 방법이나 세션 값을 복사하는 등의 방법이 존재하는데요..
보통 서버들의 DB를 하나로 묶어 세션값을 저장해오는 방법을 사용했었습니다. 그러나 이 또한 속도가 너무 느립니다.
그래서 속도를 위해 세션 저장소는 HDD가 아닌 RAM, 메모리 공유 서버여야합니다!
대표적으로 Redis라는 서버가 있어요 :)
'JWT' 카테고리의 다른 글
JWT를 이해하기전 CIA에 대해서 알아보자! (0) | 2024.06.24 |
---|---|
JWT를 이해하기 전 TCP에 대해 알아보자! (0) | 2024.06.22 |
Spring Security - OAuth2 session 방식으로 구현 해보기(Google,Facebook,Naver) (0) | 2024.06.17 |
Spring Security Session 권한처리 (1) | 2024.06.14 |
로그인 필터 구현 (0) | 2024.06.12 |