쿠키와 세션
쿠키
- 웹사이트에서 사용자의 컴퓨터에 저장하는 작은 기록 정보 파일
- 클라이언트의 상태 정보를 클라이언트의 pc에 저장했다가 필요시 정보를 참조하거나 재사용 가능
- 특징
- 300개까지 쿠키 저장 가능
- 도메인당 20개의 쿠키 저장 가능
- 하나의 쿠키는 최대 4KB
- 헤더로 넘겨짐
- 동작 순서
- 클라이언트가 페이지 요청 → 웹사이트가 쿠키 생성 → 쿠키에 정보를 담아 HTTP화면 돌려줌 → 클라이언트가 저장하고 있다가 서버에 요청할 때 다시 전송, 재방문시 PC에 해당 쿠키가 있으면 쿠키 같이 전송
- 예시
- 아이디, 비밀번호 저장, 오늘 이 창 다시 보지 않기, 장바구니
세션
- 웹 서버에 상태를 유지하기 위한 정보를 저장
- 브라우저를 닫거나, 서버에서 세션이 만료되면 삭제되므로 보안이 비교적 좋다
- 저장 데이터에 제한이 없다.
- 각 클라이언트에 Session ID를 부여해 그에 맞는 서비스를 제공
- 동작 순서
- 클라이언트가 페이지 요청 → Cookie를 확인해 Session이 있는 지 확인 → Session id가 없다면 생성해서 클라이언트에게 돌려줌 → 클라이언트는 Session-id를 쿠키에 저장 → 재접속 시 쿠키를 사용해 session- id값을 서버에 저장
- 사용 예시
- 무상태 프로토콜인 HTTP에서 한번 로그인 하면 다른 페이지로 이동해도 세션 덕분에 다시 로그인 하지 않아도 됨
OAuth
Resource Owner
: 웹 서비스를 사용하려는 유저, 자원을 소유하는 자, 사용자
Client
: 서비스를 사용할 애플리케이션 서버
Resource Server
: 권한을 부여해주는 서버
순서
- 서비스 접근 시도
- Client id, redirect_url을 바탕으로 Authorization Server에 로그인후 redirect
- Authorization Server로 부터 받은 Authorization code를 client에 전달
- Authorization Code로 클라이언트가 Authorization Server로부터 Access token, Refresh Token을 발급
- 인증완료 및 로그인 성공
- 서비스 요청시 Access Token으로 Resource Server에 정보 요청