HTTP는 비연결성, 비상태성 특징을 가지고 있다. 따라서, 사용자가
로그인했더라도 요청을 보낼 때 인증여부 확인이 어렵다.
수업에서는 JWT + Spring Security 기반 인증을 학습했다.
세션에 대해서도 정리할 필요가 있어보였다.
세션 타임아웃이나 로그인 유지 기능.
쿠키는 브라우저에 저장. 세션은 서버에서 관리
쿠키는 보안 취약. 민감정보는 저장하지 않는게 좋음. 세션은 보안성 높음.
쿠키는 일반적으로 4KB 이하로 저장. 세션은 서버에서 관리.
간편구현에서는 jwt토큰을 로컬스토리지에 저장하지만, 보안생각하면
쿠키에 HttpOnly로 저장.
로컬스토리지는 명시적 삭제 전까지 영구. 세션스토리지는 탭 종료시 삭제.
금융,공공기관,병원은 보안이 최우선이라 세션기반 + 보안 강화(OTP,인증서)를 사용하고
쇼핑몰,SNS,게임 이쪽은 토큰기반 + OAuth2 인증을 많이 사용
토큰 기반이 요즘 선호되는 이유는
1. 백엔드와 프론트가 완전히 분리된 구조에서 유리함
2. 사용자가 사용자 상태를 저장하지 않으니 MSA(마이크로서비스) 구조에 서버를 수평 확장할 때 유리
3. 모바일,데스크톱 등 다양한 플랫폼 대응 가능