본문 바로가기

개발/웹

Restful API와 JWT

 

RESTful API란? 그리고 왜 JWT를 사용하는가?

1. RESTful API란?

RESTful API는 REST 아키텍처 스타일을 따르는 API 설계 방식이다.
REST는 "REpresentational State Transfer"의 약자로, 리소스를 명확하게 표현하고,
그 리소스에 대한 행위는 HTTP 메서드로 구분하는 것이 핵심이다.

RESTful API의 특징

  • 리소스 기반 URI: /users, /orders/1 처럼 명사로 표현
  • HTTP 메서드로 행위 구분:
    • GET → 조회
    • POST → 생성
    • PUT → 전체 수정
    • PATCH → 일부 수정
    • DELETE → 삭제
  • 무상태성(Stateless): 서버는 클라이언트의 상태를 저장하지 않는다
  • 표준 HTTP 상태 코드 사용: 200, 201, 400, 404, 500 등

RESTful API의 목적은 API만 보고도 어떤 역할을 하는지 쉽게 유추할 수 있도록 설계하는 것이다.
이는 협업, 유지보수, API 문서화 측면에서 매우 큰 장점이 있다.


2. 무상태성과 인증 방식

REST의 중요한 원칙 중 하나가 "무상태성"이다.
무상태성이란, 서버가 클라이언트의 이전 요청 상태나 세션 정보를 보관하지 않는 것을 의미한다.

이 구조에서는 전통적인 세션 기반 인증 방식(서버가 로그인 상태를 기억하는 방식)을 사용하기 어렵다.
→ 그래서 나온 해결책이 바로 JWT (Json Web Token) 이다.


3. JWT란 무엇인가?

JWT는 JSON 기반의 토큰 형식으로, 로그인한 사용자의 정보를 담은 문자열이다.
서버는 로그인 시점에 토큰을 만들어서 클라이언트에 전달하고,
클라이언트는 이후 모든 요청에 이 토큰을 헤더에 포함시켜 보낸다.

이 토큰 자체에 인증 정보가 들어 있으므로, 서버는 상태를 기억하지 않아도 인증을 수행할 수 있다.

JWT의 구성

  • Header: 토큰의 타입과 해싱 알고리즘 정보
  • Payload: 실제 유저 정보, 권한 등 (Base64로 인코딩된 JSON)
  • Signature: 위 두 부분을 서버 비밀키로 서명한 것 → 위변조 방지

4. 면접에서 "왜 JWT를 썼나요?" 라는 질문에 대한 답변 예시

"RESTful API는 무상태성을 원칙으로 하기 때문에 서버가 클라이언트의 인증 상태를 기억하지 않아야 합니다.
JWT는 인증 정보를 클라이언트가 보유하고 매 요청마다 서버에 전달하는 구조이기 때문에,
이런 무상태성 구조에 잘 맞는 인증 방식입니다.
또한 마이크로서비스 구조에서도 사용자 인증 정보를 중앙 집중화하지 않고 각 서비스에서 검증할 수 있어 확장성에도 유리하다고 판단해 사용했습니다."


5. JWT 외의 인증 방식은 어떤 게 있을까?

인증 방식 설명 상태 저장 여부

세션 + 쿠키 서버가 로그인 상태를 메모리에 저장하고 쿠키로 세션 ID 전달 상태 저장 (Stateful)
JWT 클라이언트가 토큰을 보관하고 서버는 상태를 저장하지 않음 무상태 (Stateless)
OAuth 2.0 외부 서비스로부터 권한을 위임받는 인증 (ex. 구글 로그인) 일반적으로 JWT를 내부에서 사용
API Key 요청마다 고정된 키를 전달 무상태지만 인증/인가 분리가 어려움

6. 마무리

RESTful API 설계에서 가장 중요한 철학은 예측 가능하고 명확하며, 상태를 저장하지 않는 구조다.
JWT는 이런 RESTful 원칙을 만족시키기 위해 널리 사용되는 인증 방식이며,
실무에서도 보안, 확장성, 유지보수 측면에서 많은 장점을 제공한다.

단순히 “많이 쓰니까 쓴다”가 아니라,
RESTful 설계 원칙에 맞기 때문에 JWT를 썼다고 설명할 수 있어야 한다.

 

'개발 > ' 카테고리의 다른 글

WAS와 웹서버, 웹컨테이너 그리고 servlet  (0) 2025.05.23