심화 Spring

정예진·6일 전

Spring

목록 보기
16/19

2026.05.04

🧠 오늘 배운 것

Filter란?

들어온 것을 걸러주는 역할

스프링에서 필터는 들어온 모든 입력에 대해서 가장 먼저 처리하는 역할을 하게 됨.

필터는 본격적인 스프링 로직이 실행되기 전에 사용자의 요청을 한번 걸러주는 역할을 함.

Filter 구조

주로 사용하는건 OncePerRequestFilter 임.

  • OncePerRequestFilter ⭐️ : 요청 당 한 번만 실행되도록 보장. 인증/인가, 로깅, 트랜잭션 관리 같은 곳에서 자주 사용.
  • CharacterEncodingFilter : 모든 요청/응답에 지장한 인코딩(UTF-8 등)을 적용.
  • HiddkenHttpMethodFilter : HTML form은 GET / POST 만 지원 → _method 파라미터로 PUT , DELETE 등 매핑 가능하게 해줌.
  • FromContentFilter : application/x-www-form-urlencoded 데이터를 PUT , PATCH , DELETE 요청에서도 읽을 수 있게 해줌.
  • RequestContextFilter : 현재 요청을 RequestContextHolder 에 바인딩. @RequestScope Bean 사용 시 필요.

FilterChain 활용하기

Filter는 단일로 존재하지 않고 묶음 단위로 생각하면 됨.

Filter는 하나만 사용하는 것이 아니라 여러개를 만들어서 사용함.

그 Filter들에게 @Order 어노테이션을 사용해서 순서를 지정해줄 수 있음.

Filter 언제 쓰나요?

  • 로깅(요청/응답 로깅) : 모든 컨트롤러 전후에서 공통적으로 적용 가능하고, 장애 발생 시 어느 API에서 문제가 발생했는지 빠르게 추적 가능함! (성능 분석에 활용가능 - 요청 처리 시간 측정)
  • 공통 인증/권한 체크 (JWT 등) : 컨트롤러까지 들어오기 전에 인증 실패 요청을 걸러낼 수 있고, 인증/인가 로직을 중앙 집중화 → 코드 중복 제거. (보안상 안정 -미인증 요청이 내부 로직까지 내려가지 않음.)

JWT란?

실생활로 비유를 한다면, JWT는 출입증이랑 동일함.

JWT 구성 요소

  • HEADER : 암호화에서 사용된 알고리즘
  • PAYLOAD : 함호화 된 값
  • SIGNATURE : 암호화 할 때 사용한 KEY 값

JWT 사용할 때 꼭 필요한 것

  • 어떤 암호화 알고리즘을 사용할 것인지 ex) HS256
  • 어떤 정보를 넣을 것인지 ex) Tutor, KIM DONG HYUN , male
  • 어떤 암호키로 암호화 할 것인지 ex) Secret Key
  • 만료 시간

📌 만료 시간이 필요한 이유

JWT 는 최초의 로그인 이후에는 아무런 검증을 하지 않고 무조건 프리패스.

이런 JWT 를 누군가 탈취하게 된다면 개발자는 아무런 조취를 취할 수가 없기 때문에,

최소한의 안전 장치로 만료 시간 을 지정함.

JWT 흐름 따라가기

토큰을 발행해주는 경우

📌 Client 입장

인증 / 인가를 위해서 로그인

📌 Server 입장

Client가 보낸 정보를 기반으로 로그인 시도

로그인에 성공하면 JWT 토큰을 발행

토큰을 검사하는 경우

📌 Client 입장

Postman을 통해서 요청을 보냄.

요청을 보낼 때 JWT 토큰을 보내고 싶으면 헤더에 포함해서 보냄. (AuthorizationBearer TokenJWT 토큰 넣어주기)

📌 Server 입장

Client에서 보낸 요청 중 header에 JWT 토큰이 들어있는지 검사

JWT 토큰이 있으면 해당 토큰이 유효한 토큰인지 검사

유효한 토큰이라면 JWT 토큰 안에 들어 있는 값을 복호화

인증(Authentication)

“너 누구야?” 를 확인하는 과정

사용자의 신원을 확인하는 절차로, 클라이언트가 자신이 누구인지를 증명하는 것 (아이디/비밀번호, 토큰, 인증서 등)

인증에 성공하면 사용자 정보보안 컨텍스트에 저장됨. (이 정보를 바탕으로 이후 요철 처리 시 누가 요청했는지 판단 할 수 있음.)

인가(Authorization)

“너 이거 해도 돼?” 를 판단하는 과정

인증된 사용자가 요청한 리소스나 기능에 접근할 권한이 있는지 판단하는 절차로, 역할(Role), 권한(Authority)에 따라 접근 여부 결정

인가에 실패하면 403 Forbidden / 인가에 성공하면 요청 처리 진행

스프링 시큐리티에서의 인증 인가

인증 : 사용자의 신원 확인

인가 : 권한 확인

인증 없이 인가 X (항상 인증 → 인가 순서)

스프링 시큐리티는 이 두 과정을 자동화 해주는 프레임워크

0개의 댓글