Skip to main content Link Search Menu Expand Document (external link) Copy Copied

인증과 인가란 무엇일까?

  • 인증(Authentication): 사용자가 실제 유저인지 확인하는 과정이다.
  • 인가(Authorization): 사용자가 특정 리소스에 대한 접근 권한을 가지고 있는지 확인하는 과정이다.

비연결성

비연결성은 서버와 클라이언트가 지속적으로 연결되어 있지 않은 상태를 말한다. 서버는 응답 후 연결을 끊어 리소스를 절약한다.


Stateless (무상태 프로토콜)

Stateless는 서버가 클라이언트의 상태를 저장하지 않는 프로토콜이다. 서버는 각 요청을 이전의 상태와 독립적으로 처리한다.


비연결성과 무상태 프로토콜에서 유저 인증 정보를 유지하는 방법

  1. 쿠키-세션
  2. JWT (JSON Web Token)

세션 저장소를 사용하여 쿠키에 토큰을 저장하고, 세션에 인증 정보를 저장하는 방식이다.


쿠키와 세션이란 무엇일까?

쿠키와 세션은 HTTP에서 상태 정보를 유지하기 위해 사용된다.


쿠키와 세션 비교

항목 쿠키 세션(세션 쿠키)
저장 위치 클라이언트 (웹 브라우저) 서버 (웹 서버)
예시 사이트 팝업의 “오늘 다시 보지 않기” 정보 저장 로그인 정보 저장
만료 시점 쿠키 저장 시 만료일시 설정 가능 1. 브라우저 종료 시
2. 로그아웃 시
3. 일정 시간 동안 재요청 없을 경우 만료
용량 제한 브라우저별로 다르며, 크롬 기준 하나의 도메인당 180개, 하나의 쿠키당 4KB 제한 없음
보안 취약 (클라이언트에서 쉽게 변경, 삭제 가능) 안전 (서버에 저장되므로 클라이언트가 수정할 수 없음)

JWT란 무엇일까?

JWT(Json Web Token)는 Claim 기반의 Web Token으로, JSON 형식을 사용하여 데이터를 인코딩한다.


JWT의 사용

대용량 트래픽을 처리하는 서버 환경에서 유용하며, 특히 서버가 2대 이상일 때 아래 방법으로 처리할 수 있다:

  • Sticky Session: 특정 클라이언트의 요청을 고정된 서버에서 처리한다.
  • 세션 저장소: 모든 세션을 하나의 저장소에 저장한다.
  • JWT: 서버가 토큰만을 확인하고 별도의 세션 저장 없이 인증을 처리한다.

모든 서버는 동일한 Secret Key를 가지고 있어야 하며, 이를 통해 암호화하고 위조 여부를 검증한다.


JWT의 장점과 단점

  • 장점: 외부와 연결 없이 인증 정보를 처리하므로, 동시 접속자가 많을 때 서버 부하를 줄일 수 있다.
  • 단점: 구현이 복잡해지고, JWT의 크기가 클수록 네트워크 비용이 증가한다. 또한, 일부 토큰만 만료시키는 방법이 없고, Secret Key가 유출되면 JWT를 조작할 수 있다.

실습자료

GitHub