Spring/Spring Security

[Spring Security] 5-3. 보안: HTTP Requests

noahkim_ 2023. 10. 14. 02:03

1. Redirect to HTTPS

  • Spring Security에서 HTTP 요청을 자동으로 HTTPS로 리다이렉트시키는 설정

 

설정

더보기
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        // ...
        .requiresChannel(channel -> channel
            .anyRequest().requiresSecure()
        );
    return http.build();
}

 

2. Strict Transport Security

3. Proxy Server Configuration

  • 프록시나 로드 밸런서를 사용하는 환경에서, 클라이언트의 실제 요청 정보를 올바르게 인식하도록 설정하는 방법
  • ⚠️ 프록시릍 통해 요청이 전달되는 경우, 애플리케이션이 보는 연결 정보가 클라이언트 정보가 아닌 프록시 정보로 들어옴

 

X-Forwarded-* 헤더

  • 일반 클라이언트도 임의로 수정할 수 있음
  • 신뢰된 프록시에서 들어온 요청만 받도록 제한해야 함
헤더 의미
X-Forwarded-For 원래 클라이언트 IP
X-Forwarded-Proto 사용자가 사용한 프로토콜인 HTTP 또는 HTTPS
X-Forwarded-Host 사용자가 요청한 원래 Host
X-Forwarded-Port 사용자가 요청한 원래 포트
X-Forwarded-Prefix 프록시가 추가하거나 제거한 경로 Prefix

 

예시

더보기
X-Forwarded-For: 203.0.113.195
X-Forwarded-Proto: https
X-Forwarded-Host: example.com

 

설정

더보기
server.forward-headers-strategy: native|framework|none
  • native: 내장 서버의 네이티브 지원 사용 (WAS의 네이티브 기능 사용)
  • framework: Spring Framework 지원 사용 (Servlet의 ForwardedHeaderFilter를 추가함)

 

 

 

출처