본 내용은 10분 테코톡 나봄님의 강의를 토대로 작성하였습니다.
1. 인증과 인가의 차이
인증
- 사용자가 누구인지 확인하는 작업
- 로그인
인가
- 사용자의 권한이 어디까지인지
- 관리자 권한 하의 게시글 삭제
2. 쿠키, 세션, 토큰
- 인증을 유지할 수 있는 수단
HTTP
- 비연결지향
- 한 번 통신하고 나면 끝남
- 상태없음
- 서버가 클라이언트의 상태를 보존하지 않음
- 장점
- 서버의 리소스를 절약할 수 있다.
- 서버 확장성에 용이
- 단점
- 상태를 보존하지 않는다.
쿠키
- 쿠키는 브라우저에 저장된다.
- 쿠키의 흐름
- 서버에서 Set-Cookie 헤더에 key=value를 포함해 보낸다.
- 클라이언트는 Set-Cookie 헤더 기반으로 브라우저에 저장한다.
- 다음 요청부터는 Cookie헤더에 key=value를 포함해 보낸다.
- Domain: 쿠키의 대표 서버
- Expiration: 만료 기간
- Host Only: 요청 도메인과 쿠키의 대표 서버가 같아야 함
- Session: 브라우저가 종료될 때까지 유지
- Secure: 보안을 위함 (Https에서 사용 가능)
- Http Only: Client-side 스크립트에서 접근 불가
- 단점
- 클라이언트에 저장되어서 보안에 취약하다.
- 쿠키 헤더에 포함되어 있어 탈취 당할 위험
- 보안에 이슈가 없는 데이터를 저장시 사용
세션
- 서버에 데이터가 저장된다.
- 세션의 흐름
- 클라이언트가 서버 접속 시 세션 ID를 발급받는다.
- 클라이언트는 세션 ID를 쿠키로 저장하고 가지고 있다.
- 클라이언트는 요청할 때 세션 ID와 함께 서버에 요청한다.
- 서버는 세션 ID로 저장되어 있는 클라이언트 정보를 확인한다.
- 쿠키에 비해 비교적 안전하다.
- 서버를 확장하는 데에 부담
- 멀티 디바이스 환경에서 신경써야 할 부분이 있다.
- 유저 정보를 서버 메모리에 들고 있게 된다.
- 서버 메모리에 부담
토큰
- 브라우저에 저장된다.
- 유저를 식별할 수 있는 토큰을 저장
- 토큰의 흐름
- 클라이언트는 로그인을 한다.
- 정보가 맞으면 서버는 클라이언트에게 토큰을 제공한다.
- 다음 요청부터는 Authorization 헤더에 토큰을 포함해 요청한다.
- 세션과 비교한 토큰의 장점
- 서버의 메모리 부담 적음
- 서버 확장에 부담 적음
- 멀티 디바이스 환경에서 사용하기 편함
- 단점
- 강제로 만료시킬 수 없다.
- 보통 유효기간을 짧게 함
Reference
'programming study > web' 카테고리의 다른 글
이벤트루프 (0) | 2021.09.03 |
---|---|
프론트엔드 성능 측정 (0) | 2021.08.10 |
SSR, SSG, JAM Stack (0) | 2021.07.29 |
모듈 번들러와 빌드도구 (0) | 2021.07.28 |
OSI 7 Layer (0) | 2021.07.25 |