[ETC] 쿠키, Session, JWT
쿠키
- 서버에서 보통 쿠키는 신경 안쓴다.
- 쿠키는 조작이 얼마든지 가능해서 신뢰 가능한 값이 아니다.
쿠키의 사용 예
- 방문 사이트에서 로그인 시, “아이디와 비밀번호를 저장하시겠습니까?”
- 쇼핑몰의 장바구니 기능
- 자동로그인
- 팝업에서 “오늘 더 이상 이 창을 보지 않음” 체크
- 쇼핑몰의 장바구니 항목
쿠키와 크롬브라우저의 자동완성 차이점
- 크롬 브라우저 자동 완성은 쿠키랑은 상관 없는 브라우저의 기능이다.
보통 API 서버에서 cookie 를 주면 클라이언트가 cookie 를 갖고있는 형식이다.
ID 자동완성은 클라이언트에서 cookie 를 생성하고 사용한다.
Session 방식
Javax servlet HttpSession 모듈을 사용시 쿠키를 자동 생성해 response한다.
-
SetAttribute로 인증 성공시 쿠키를 자동으로 생성해 클라이언트로 응답한다.
-
쿠키에는 JSESSIONID 값이 들어있다.
-
클라이언트는 로그인 API 요청시에 자동으로 쿠키값도 같이 보낸다.
-
서버는 쿠키에서 JSSESIONID 를 SESSION DB에서 확인해서 대조하고 인증절차를 밟는다.
JWT 방식
토큰 로그아웃 방법
- 서버에서 토큰을 파괴 방법
- 서버에서 파괴된 토큰 목록 저장
- jwt state management
- jwt logout implementation
Session 과 JWT 방식의 차이
DB에서도 암호화가 가능하다.
인증 할때 취약점 및 주의해야 될 점
- 누가 어떤 정보를 들고 있나
- 탈취가 어느 수준에서 가능한가
- 인증 재사용은 어떻게 하는가