인증과 인가
📌 인증 (Authentication)
- 해당 유저가 실제 유저인지 인증하는 개념
- 스마트폰 지문 인식, 사이트 로그인 등
📌 인가 (Authorization)
- 해당 유저가 특정 리소스에 접근 가능한지 허가를 확인하는 개념
- 관리자 페이지 - 관리자 권한 등
인증 방식
📌 쿠키-세션
- ‘특정 유저가 로그인 되었다’ 라는 상태를 저장하는 방식
- 인증과 관련된 최소한의 정보는 저장해서 로그인을 유지시킨다는 개념
📌 JWT 기반
- JWT(JSON Web Token): 인증에 필요한 정보들을 암호화시킨 토큰
- 쿠키/세션 방식과 유사하게 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별
쿠키와 세션
쿠키와 세션 모두 HTTP 에 상태 정보를 유지(Stateful)하기 위해 사용된다
쿠키와 세션을 통해 서버에서는 클라이언트 별로 인증 및 인가를 할 수 있게 된다
📌 Cookie
- 클라이언트에 저장될 목적으로 생성한 작은 정보를 담은 파일
- Application - Storage - Cookies 에 도메인 별로 저장
- 구성요소
- Name (이름): 쿠키를 구별하는 데 사용되는 키 (중복될 수 없음)
- Value (값): 쿠키의 값
- Domain (도메인): 쿠키가 저장된 도메인
- Path (경로): 쿠키가 사용되는 경로
- Expires (만료기한): 쿠키의 만료기한 (만료기한 지나면 삭제)
📌 Session
- 서버에서 일정시간 동안 클라이언트 상태를 유지하기 위해 사용
- 서버에서 클라이언트 별로 유일무이한 '세션 ID' 를 부여한 후 클라이언트 별 필요한 정보를 서버에 저장
- 서버에서 생성한 '세션 ID' 는 클라이언트의 쿠키값('세션 쿠키' 라고 부름)으로 저장되어 클라이언트 식별에 사용
- 쿠키에 비해 비교적 보안 안전 (서버에 저장되기 때문)
- 세션 동작 방식