Tech Stack/Spring Boot

[Spring MVC] DispatcherServlet(디스패처 서블릿)이란 무엇인가?

[Spring MVC] DispatcherServlet(디스패처 서블릿)이란 무엇인가? Spring MVC 프레임워크를 공부하다 보면 가장 먼저 마주치는 개념이 바로 DispatcherServlet(디스패처 서블릿)입니다. 간단히 말해, 모든 HTTP 요청을 가장 먼저 받아 적절한 컨트롤러로 배달해주는 '중앙 창구' 역할을 합니다. 1. 디스패처 서블릿의 정의 Dispatcher는 "보내다(파견하다)"라는 뜻을 가지고 있습니다. Servlet 컨테이너의 가장 앞단에서 요청을 받아 관리하는 패턴을 Front Controller 패턴이라고 부르는데, 스프링에서는 이를 DispatcherServlet이 담당합니다. 핵심 특징: 과거에는 모든 서블..

[Spring] JWT 05. RefreshToken DB 저장 + 1회성 폐기(로테이션) + 재발급 흐름 완성

[Spring] JWT 05. RefreshToken DB 저장 + 1회성 폐기(로테이션) + 재발급 흐름 완성AccessToken은 짧게, RefreshToken은 길게 사용합니다.하지만 RefreshToken을 그냥 클라이언트에만 두면 탈취 위험이 있습니다.그래서 실무에서는 RefreshToken을 DB에 저장하고 1회성으로 폐기(로테이션)하는 방식을 많이 사용합니다.1. 왜 RefreshToken을 DB에 저장해야 할까? 탈취된 RefreshToken 무효화 가능 중복 로그인 제어 가능 (1인 1토큰) 로그아웃 시 강제 만료 가능즉, AccessToken은 Stateless,RefreshToken은 Stateful하게 관리하는 전략입니다.2. DB 테이블 설계 예시CREATE TABLE mem..

[Spring] JWT 04. 만료 임박 자동 갱신(TokenRenewalInterceptor) 적용

[Spring] JWT 04. 만료 임박 자동 갱신(TokenRenewalInterceptor) 적용 (응답 헤더로 새 토큰 내려주기)JWT를 운영하다 보면 AccessToken 만료 때문에 사용자 경험이 끊기는 문제가 생깁니다.이를 줄이기 위해 만료 임박(예: 10분 이하)이면 서버가 자동으로 새 AccessToken을 발급해서응답 헤더로 내려주는 방식을 사용할 수 있습니다.1. 자동 갱신 방식이란?요청이 들어오면 서버가 AccessToken의 남은 시간을 확인하고,만료가 임박하면 새 AccessToken을 만들어서 응답 헤더에 같이 담아줍니다. 클라이언트가 AccessToken으로 API 요청 서버가 토큰 남은 시간(remain)을 계산 남은 시간이 기준(renewal-limit)보다 작으면 새..

[Spring] JWT 03. Interceptor로 인증 적용하기 (로그인 필요 API 보호)

[Spring] JWT 03. Interceptor로 인증 적용하기 (로그인 필요 API 보호)JWT를 발급했다면 이제 “로그인 필요한 API”를 보호해야 합니다.Spring에서는 보통 Security Filter를 많이 쓰지만, 프로젝트 구조에 따라 Interceptor로도 충분히 구현할 수 있습니다.이번 글은 Interceptor 기반 JWT 인증 흐름을 정리합니다.1. Interceptor로 JWT 인증을 하는 이유 컨트롤러 실행 전에 요청을 가로채서 검사할 수 있음 특정 URL 패턴만 “로그인 필요”로 지정 가능 JWT 파싱 후 loginId / 권한을 request에 담아 컨트롤러에서 사용 가능핵심 목표는 딱 2가지입니다. Authorization 헤더에 토큰이 없거나 잘못되면 → 401..

[Spring] JWT 02. AccessToken / RefreshToken 구조 + 재발급 흐름

[Spring] JWT 02. AccessToken / RefreshToken 구조 + 재발급 흐름 JWT를 실제 서비스에서 쓰려면 보통 토큰을 2개로 나눕니다.AccessToken은 짧게, RefreshToken은 길게 가져가서 보안을 올리는 방식입니다.1. 왜 토큰을 2개로 나눌까?AccessToken 하나만 오래 쓰면 보안이 약해집니다. (탈취되면 오래 위험)그래서 AccessToken은 짧게(예: 10~30분), 만료되면 RefreshToken으로 재발급 받습니다. 구분 AccessToken RefreshToken 역할 API 요청 인증 AccessToken 재발급 만료 짧음 (1..

[Spring] JWT 01. Json Web Token 개념정리

[Spring] JWT(Json Web Token) 정리JWT(Json Web Token)는 로그인 이후 세션을 대신해서 사용자 인증을 처리하는 토큰 방식입니다.비밀번호를 대신하는 것이 아니라, 로그인 성공 후 발급되는 인증 증표입니다.1. 비밀번호와 JWT의 차이비밀번호 → 로그인할 때만 사용 (DB에는 해시 저장)JWT → 로그인 성공 후 발급, 이후 요청마다 전송로그인 흐름은 아래와 같습니다.아이디 + 비밀번호 전송서버가 비밀번호 검증성공하면 JWT 발급이후 요청은 JWT로 인증2. JWT 구조JWT는 3개의 영역으로 구성됩니다.Header.Payload.SignatureHeader : 알고리즘 정보 (예: HS256)Payload : 사용자 정보(Claim)Signature : 위변조 방지 서명중..