Dispatcher-Servlet
디스패처 서블릿의 dispatch는 "보내다"라는 뜻을 가지고 있다. 그리고 이러한 단어를 포함하는 디스패처 서블릿은 HTTP 프로토콜로 들어오는 모든 요청을 가장 먼저 받아 적합한 컨트롤러에 위임해주는 프론트 컨트롤러(Front Controller)라고 정의할 수 있다.
DispatcherServlet의 순서도
SSR
CSR
현재 내가 사용하는 방식은?
- 클라이언트 요청이 디스페쳐 서블릿으로 들어옴
- Handler Mapping을 통해 어떤 Controller로 매핑할지 확인
- Handler Adapter를 사용해 Controller로 요청 전달
- Service단에서 비지니스 로직을 사용 (보통 Database CRUD 진행)
- 컨트롤러가 ResponseEntity 반환
- 서버 응답을 클라이언트로 반환
웹에서의 동작?
- 하나의 Request가 들어올 때마다 Thread를 생성
- DispatcherServelet으로 전달
- CSR or SSR로 Response 생성
- Response 전달
JWT의 개념과 구조
JWT, 즉 Json Web Token은 인증과 정보 교환을 위해 설계된 컴팩트하고 자가 수용적인 방식의 토큰입니다. 이는 헤더(Header), 페이로드(Payload), 그리고 서명(Signature)의 세 부분으로 구성됩니다.
- 헤더(Header): 헤더는 토큰의 유형(JWT)과 사용된 해싱 알고리즘(예: HMAC SHA256)을 정의합니다.
- 페이로드(Payload): 페이로드는 토큰에 담길 데이터를 포함합니다. 데이터는 Claim이라고 부르며 Key Value값으로 구성됩니다.
- 서명(Signature): 서명은 토큰이 변조되지 않았음을 보증합니다. 서버의 비밀 키를 사용해 헤더와 페이로드를 서명합니다.
많이 하시는 오해
- JWT는 암호화 되어있다.
- 암호화가 아닌 서명된 토큰일 뿐입니다. 즉 인코딩 된 데이터를 디코딩하면 누구나 데이터를 볼 수 있습니다.
- JWT는 모든 데이터를 넣어도 된다
- 안됩니다. JWT토큰 내부 정보는 누구든 확인 할 수 있기때문에 정말 중요한 정보는 넣어서는 안됩니다.
- JWT를 사용하면 보안이 다 된다
- 아닙니다 JWT토큰은 기본적으로 “누가 이 토큰을 만들었는지”에 대한 사실만 적혀있습니다. → 내가 만들었으니 토큰 내부 정보를 믿을수 있구나!
Spring Security 기본 구조
'TIL' 카테고리의 다른 글
TIL - 2024/06/25 (0) | 2024.06.25 |
---|---|
TIL - 2024/06/24 (0) | 2024.06.24 |
TIL - 2024/06/20 (0) | 2024.06.20 |
TIL - 2024/06/19 (0) | 2024.06.19 |
TIL - 2024/06/18 (0) | 2024.06.18 |