[WEB]

서승·2025년 6월 29일

기술 지식

목록 보기
11/12

REST ?

REST 는 자원을 표현에 의한 상태 전달을 뜻한다.

URL을 통해 자원을 명시하고, HTTP Method를 통해 자원에 대한 처리 방법을 지정한다.

Restful API

REST API는 REST를 기반으로 서비스 API를 구현한 것

또한, RESTful API는 REST의 원리를 잘 따르는 시스템을 말한다.

HTTP

HTTP : 하이퍼 텍스트 전송 프로토콜

  • 연결을 유지하지 않는 비연결성 특징
  • 상태 정보를 저장하지 않는 무상태성 특징
  • 정해진 규격의 메세지에 모든 정보를 담아서 통신

HTTP 통신 방법

클라이언트가 HTTP 요청 메시지에 정보를 담아 서버에 요청하면, 서버는 클라이언트로부터 받은 HTTP 메세지를 확인해서 요청받은 새로운 HTTP 응답 메시지에 담아 클라이언트에게 응답한다.

HTTP 메시지 구조

  • start-line : HTTP method / uri / statusCode
  • HTTP Header : HTTP 전송에 필요한 부가 정보들
  • Message Body : 실제 전송할 데이터

RESTful API 와 HTTP

RESt 는 HTTP의 장점을 잘 활용하기 위한 원칙

URL로 자원을 표현하는 데에 집중하고, (API 설계 규칙에 따른 설계)

HTTP Method를 적정히 사용하여 자원의 행위에 대한 정의를 한다.

HTTP Method

HTTP Method는 REST API에서 해당 자원을 어떤 방식으로 처리할 것 인지를 명시해주는 역할

  • GET
  • POST
  • PUT : 데이터 수정(데이터가 없으면 새로 생성)
  • PATCH
  • DELETE

GET 과 POST의 차이

GET은 데이터를 조회하기 위해 사용

보통 요청 시에 필요한 데이터를 URL에 PathVariable로 추가시키거나 HTTP Header를 이용

POST는 데이터를 추가하기 위해 사용합니다. 데이터를 Request Body에 포함하여 전송

GET 요청 시에도 Request Body를 전송할 수 있지만, 일반적으로 GET 요청을 보내면 Body를 확인하지 않는다.

JWT 토큰

JWT는 Json Web Token의 약자로, 웹에서 사용되는 JSON 형식의 토큰에 대한 표준 규격

토큰 자체에 정보를 담고 있어서 JWT 토큰 만으로 사용자의 인증, 인가 정보를 안전하게 주고받을 수 있다.

JWT는 Header, Payload, Signature를 점 (.) 으로 구분한다.

  • 헤더는 토큰의 타입과 암호화 알고리즘으로 이루어져있다.
  • 내용에는 원하는 데이터를 키-값 형태로 담는다. (클레임, Clam)
  • 서명에는 헤더와 페이로드가 비밀 암호화 키로 서명되어 저장한다.

JWT 토큰을 이용한 인증 인가 (Spring Security)

  1. 사용자 로그인 시 JWT 토큰을 생성해서 반환
  2. 해당 토큰을 클라이언트에서 관리, 모든 요청의 “Authorization” header에 토큰을 포함
  3. Spring Security filter를 등록하여 JWT 토큰에 문제가 없는지 확인 (변조 여부, expired 여부 등)
  4. 문제가 없다면 SecurityContext에 UserDetails를 로드하는 방식으로 인증

JWT 토큰을 이용한 인증을 사용하는 이유 vs 세션 인증

단일 도메인이라면 세션 기반 인증을 사용할 수 있지만, 분산 환경의 경우 토큰 기반인증을 사용하는 것이 적합하다.

세션을 이용하려면 클라이언트에서 갖고 있는 세션 ID에 맞는 값을 서버 측에서 보관해야한다.

이 세션 쿠키는 단일 도메인에서만 작동하도록 설계되어 있기 때문에 여러 도메인에서 관리하기는 어렵다.

반면에 JWT 토큰은 토큰 자체에 데이터를 담고 있기 때문에 파싱 방법만 알고 있다면, 어디서나 토큰 내에 저장된 데이터를 이용할 수 있다. 따라서 여러 도메인으로 분리된 서비스의 경우 토큰 방식의 인증을 선택해야 한다.

profile
정진 또 정진

0개의 댓글