1. 쿠키와 세션
1) 쿠키
- 클라이언트의 로컬에 Key - Value 쌍이 String 형태로 저장되는 데이터 파일
- 브라우저가 종료된 후에도 상태가 유지됨
- 클라이언트의 상태 정보(이름, 값, 만료 날짜 및 시간, 경로정보)를 포함
- 클라이언트 로컬에 저장되므로 보안에 취약해 로그인 같은 인증에 잘 쓰이지 않음
- 단순한 아이디의 저장이나 쇼핑몰의 장바구니 담아두기 같은 기능에 사용
2) 세션
- 일정 시간 같은 클라이언트로부터 들어오는 일련의 요청을 하나의 상태로 보고, 그 상태를 유지하는 기술
- 브라우저가 종료되기 전까지 상태가 유지
- 상태 유지 수단으로 쿠키를 사용하지만, 사용자 정보를 클라이언트 로컬이 아닌 서버측에서 관리
- 보안상 중요한 작업인 로그인 기능에 사용
3) 쿠키와 세션의 필요성
- HTTP 프로토콜의 경우 Connectionless(비연결성), Stateless(무상태) 한 특성이 있어 요청간에 의존관계가 없다
- HTTP 프로토콜의 경우 매 통신마다 새로 연결해야 하기 때문에 현재의 클라이언트가 이전 접속자와 같은지를
알 수 있는 방법이없다
- 위 사항을 보완하는데 쿠키와 세션이 사용됨
(1) 쿠키 동작방식
- 클라이언트가 페이지 요청
- 서버에서 쿠키를 생성하고 HTTP 헤더에 쿠키를 포함시켜 응답
- 브라우저가 종료되어도 쿠키 만료기간이 있다면 클라이언트에서 보관함
- 같은 요청을 할 경우 HTTP 헤더에 쿠키를 함께 보냄
- 서버에서 쿠키를 읽어 이전 상태 정보를 변경할 필요가 있을 때 쿠키를 업데이트 하여 변경된 쿠키를
HTTP 헤더에 포함시켜 응답
(2) 세션 동작방식
- 클라이언트가 서버에 접속시 세션 ID 발급
- 클라이언트는 세션 ID 에 대해 쿠키를 사용해서 저장하여 가지고있음
- 클라이언트는 서버에 요청할 때 이 쿠기의 세션 ID 를 같이 서버에 전달하여 요청
- 서버는 세션 ID 를 전달 받아 별다른 작업없이 세션 ID 로 세션에 있는 클라이언트 정보를 가져와서 사용
- 클라이언트 정보를 가지고 서버 요청을 처리하며 클라이언트에게 응답
2. 세션기반 인증과 토큰기반 인증
1) 세션기반 인증
- 클라이언트에게 세션 ID 를 발급해 세션 정보를 서버에 저장하여 사용자를 검증하는 방식
- 데이터 베이스 서버에 저장됨
2) 토큰기반 인증
- 따로 정보를 DB 에 저장하지 않고 인증된 사용자에게 토큰을 발급하여 서버에 요청시 토큰을 함께 보내고
유효한지 확인하여 검증하는 방식
- 사용자 정보를 서버에 저장하지 않고 클라이언트의 요청에 따라서 응답만 하는 Stateless 한 구조를 가짐
'CS 전공지식' 카테고리의 다른 글
24.02.16 웹과 통신 (1) | 2024.02.16 |
---|---|
24.02.15 Spring 및 웹개발 (0) | 2024.02.15 |
24.02.13 Java 관련 4 (1) | 2024.02.13 |
24.02.07 Java 관련 3 (1) | 2024.02.08 |
24.02.07 Java 관련 2 (1) | 2024.02.07 |