Spring Boot Security 설정으로 WAS 로그인 창 제거하기
📌 문제 발생: REST API 호출 시 WAS 로그인 창이 뜨는 현상
최근 Spring Boot로 REST API 서버(WAS)를 개발하면서, 브라우저에서 WAS URL을 직접 입력하면 로그인 페이지가 뜨는 문제를 경험했습니다. 원래 REST API는 앱이나 웹에서 호출하는 것이 목적이므로, 브라우저를 통한 직접 접근 시 로그인 창이 뜰 필요가 없죠. 하지만 기본 Spring Security 설정이 활성화된 상태라면, 인증이 필요한 모든 요청에 대해 기본 로그인 폼이 표시됩니다.
🧐 왜 WAS IP가 네트워크에서 노출될까?
보안 점검 과정에서 "WAS IP가 네트워크 요청에서 확인된다"는 피드백을 받았습니다. 하지만, 이는 기본적인 네트워크 동작 때문입니다.
클라이언트(WEB/APP)는 REST API 호출을 위해 서버(WAS)로 요청을 보내야 하고, 이 과정에서 Request Headers
에 서버 주소(WAS IP)가 포함됩니다.
따라서, 패킷 분석(Network Sniffing) 시 WAS의 IP가 보이는 것은 정상적인 현상입니다.
🔧 해결 방법: Spring Security 설정 변경
문제를 해결하기 위해 Spring SecurityConfig 설정을 수정했습니다. 기본 로그인 폼과 HTTP Basic 인증을 비활성화하고, 필요 없는 보안 정책을 제거했습니다.
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable()) // CSRF 보호 비활성화 (API 서버라면 필요 없음)
.formLogin(form -> form.disable()) // 기본 로그인 폼 비활성화
.httpBasic(basic -> basic.disable()) // HTTP Basic 인증 비활성화
.authorizeHttpRequests(auth -> auth
.requestMatchers("/public/**").permitAll() // 공개 API 경로 허용
.anyRequest().authenticated()); // 나머지 요청은 인증 필요
return http.build();
}
}
✅ 추가 조치: 네트워크 접근 제한
또한, Web Server 외의 WAS 직접 접근을 원천 차단하도록 네트워크 방화벽(Firewall)과 Reverse Proxy 설정을 조정했습니다.
🚀 적용 후 효과
- WAS URL 직접 접근 시 로그인 페이지가 뜨는 문제 해결
- REST API 서버에 맞는 보안 정책 적용
- 불필요한 인증 화면 제거로 UX 개선
📌 마무리
Spring Boot로 REST API를 개발할 때, 기본 보안 설정이 웹 애플리케이션용으로 되어 있어 예상치 못한 로그인 화면이 뜰 수 있습니다. 이번 경험을 통해 Spring Security 설정을 커스터마이징하는 방법을 정리해보았습니다.
Comments
Post a Comment