TIL

TIL - 2024/06/21

기석김 2024. 6. 21. 21:00

Dispatcher-Servlet

디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다.

 

DispatcherServlet의 순서도

 

SSR

CSR

현재 내가 사용하는 방식은?

 

  1. 클라이언트 요청이 디스페쳐 서블릿으로 들어옴
  2. Handler Mapping을 통해 어떤 Controller로 매핑할지 확인
  3. Handler Adapter를 사용해 Controller로 요청 전달
  4. Service단에서 비지니스 로직을 사용 (보통 Database CRUD 진행)
  5. 컨트롤러가 ResponseEntity 반환
  6. 서버 응답을 클라이언트로 반환

웹에서의 동작?

  1. 하나의 Request가 들어올 때마다 Thread를 생성
  2. DispatcherServelet으로 전달
  3. CSR or SSR로 Response 생성
  4. Response 전달

 

JWT의 개념과 구조

JWT, 즉 Json Web Token은 인증과 정보 교환을 위해 설계된 컴팩트하고 자가 수용적인 방식의 토큰입니다. 이는 헤더(Header), 페이로드(Payload), 그리고 서명(Signature)의 세 부분으로 구성됩니다.

 

  • 헤더(Header): 헤더는 토큰의 유형(JWT)과 사용된 해싱 알고리즘(예: HMAC SHA256)을 정의합니다.
  • 페이로드(Payload): 페이로드는 토큰에 담길 데이터를 포함합니다. 데이터는 Claim이라고 부르며 Key Value값으로 구성됩니다.
  • 서명(Signature): 서명은 토큰이 변조되지 않았음을 보증합니다. 서버의 비밀 키를 사용해 헤더와 페이로드를 서명합니다.

많이 하시는 오해

  1. JWT는 암호화 되어있다.
    • 암호화가 아닌 서명된 토큰일 뿐입니다. 즉 인코딩 된 데이터를 디코딩하면 누구나 데이터를 볼 수 있습니다.
  2. JWT는 모든 데이터를 넣어도 된다
    • 안됩니다. JWT토큰 내부 정보는 누구든 확인 할 수 있기때문에 정말 중요한 정보는 넣어서는 안됩니다.
  3. JWT를 사용하면 보안이 다 된다
    • 아닙니다 JWT토큰은 기본적으로 “누가 이 토큰을 만들었는지”에 대한 사실만 적혀있습니다. → 내가 만들었으니 토큰 내부 정보를 믿을수 있구나!

Spring Security 기본 구조