본문 바로가기

programming study/web

인증과 인가

본 내용은 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

[10분 테코톡] 나봄의 인증과 인가

'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