WebFlux Multipart 프록시에서 'Unexpected end of form'이 터지는 이유

WebFlux 기반 BFF에서 multipart/form-data를 내부 서비스로 프록시할 때, multipart를 파싱한 뒤 재조립하면서도 원본 헤더(Content-Type/Content-Length)를 그대로 복사하면 boundary·길이가 body와 불일치해 “Unexpected end of form”이 발생한다. BodyInserters가 메시지를 재작성(write)한다는 관점과, 프록시를 “재작성(rebuild)”/“바이트 스트리밍(pass-through)” 모드로 구분하는 기준을 정리한다.


Project Loom 실험기

필자는 강남언니(힐링페이퍼)의 기술블로그를 읽고 이벤트 소싱 패턴에 대해 관심을 가지게 되었고, 이에 대한 학습을 진행하면서 기존의 Platform Thread와 Virtual Thread에 대해 비교하는 글을 정리해보기로 하였다.


Spring Security + JWT 기반 인증/인가 구현기

필자는 최근 프로젝트에서 Spring Security를 적용하며 JWT 기반 인증/인가 로직을 구현하였다. Spring Security는 기본적으로 모든 요청을 차단하고, 인증/인가 규칙에 따라 접근을 허용하는 보안 프레임워크이다. 본 글에서는 JWT 기반의 Stateless 인증 방식을 도입하며 마주한 이슈들과 해결 과정을 공유하고자 한다.


JWT Refresh Token Rotation (RTR) 전략으로 보안 강화하기

사이드 프로젝트를 진행하며 백오피스를 개발하게 되었고, 그 과정에서 관리자 로그인 페이지 구현을 맡게 되었다. 인증 방식으로 JWT 기반 접근 방식을 선택하였고, Access Token의 탈취를 방지하기 위해 짧은 TTL을 설정하였다. 그러나 구현 도중 “만약 Refresh Token이 탈취된다면 어떻게 대응해야 할까?”라는 의문이 생겼고, 이를 해결할 수 있는 방안을 탐색하게 되었다.


Pagination