-
세션, 토큰, 쿠키기타 2021. 12. 16. 23:50반응형
세션
- 서버에 로그인 되어있음이 지속되는 상태를 '세션' 이라고 한다.
- 일정 시간동안 같은 사용자(브라우저)로부터 들어오는
일련의 요구를 하나의 상태로 보고, 그 상태를 일정하게 유지시키는 기술세션의 동작 순서
- 클라이언트가 페이지를 요청
- 서버는 접근한 클라이언트의 Request-Header 필드인 Cookie를 확인하여,
클라이언트가 해당 session-id를 보냈는지 확인한다. - session-id가 존재하지 않는다면,
서버는 session-id를 생성해 클라이언트에게 돌려준다. - 서버에서 클라이언트로 돌려준 session-id를 쿠키를 사용해 서버에 저장한다.
쿠키 이름 : SESSIONID - 클라이언트는 재접속 시,
이 쿠키(SESSIONID)를 이용하여 session-id 값을 서버에 전달
세션과 토큰은 왜 필요한가?
- HTTP(웹사이트를 이용할때 쓰는 프로토콜)은 stateless이다.
- stateless는 서버로 가는 모든 요청이 이전 요청과 독립적으로 다루어 진다는 뜻. 요청이 끝나면 서버는 내가 누군지 잊어버린다.
- 요청이 끝나면 서버는 우리가 누군지 잊어버린다.
- 이를 해결하는 방법이 세션
- 세션은 서버 확장시 세션의 정보의 동기화 문제가 발생한다.
- 세션은 메모리에 저장되기 때문에 에러가 발생할 경우 휘발될 가능성
- 이러한 문제를 해결하는 방법이 토큰
토큰(JWT - Json Web Token)
- 사용자가 로그인을 하면 서버에서 상태를 저장하지 않고, 토큰 바디에 정보를 저장해 클라이언트가 가진 뒤, 이를 증명서 처럼 사용하는 것
- 세션의 한계와 문제점 때문에 토큰이 등장
- 토큰은 서버의 상태를 저장하지 않음 (Stateless)
- 토큰 자체로 정보를 가지고 있어서 별도의 인증 서버가 필요없다.
- 토큰은 헤더, 페이로드, 시그니처로 3부분으로 구성
쿠키
- 서버는 쿠키를 활용하여 나에 관한 정보(웹사이트의 언어 설정)를 브라우저에 데이터를 넣을 수 있다.
- 이후 해당 웹사이트에 방문할 때마다 브라우저는 해당 쿠키도 서버에게 보내준다.
- 쿠키는 유효기간이 존재한다. 서버가 정한 기간에 따라 유효하다.
순서
1. 서버에서 나의 브라우저로 쿠키를 전송
2. 브라우저는 정보를 쿠키에 담아 저장
3. 추후 다음에 해당 웹사이트 방문 시 쿠키는 요청과 함께 서버로 보내지고, 서버는 쿠키가 기억해둔 언어 설정의 페이지를 제공
300x250'기타' 카테고리의 다른 글
JSONObject와 JSONArray 차이 (0) 2022.03.12 HTTP, AJAX, 폴링, 롱폴링 기법, 웹소켓 (0) 2022.01.24 DLL이란? (0) 2022.01.24 동기와 비동기 (0) 2021.12.16 AutoHotkey로 방향키 대신 wasd 또는 ijkl를 방향키로 쓰기 - AutoHotkey 다운 부터 키맵 설정, 시작 프로그램 등록하기 (1) 2021.09.05