반응형
🚨 문제 상황
백엔드 프로젝트에서 POST /api/signup
API를 Postman으로 테스트하려고 했는데,
아래와 같은 401 에러가 발생했다.
HTTP 401 Unauthorized
http://localhost:8080/api/signup
에 JSON 바디를 담아 요청했지만, 응답으로 401이 왔다.
❓ 왜 이런 에러가 났을까?
Spring Security는 기본 설정 시, 모든 요청에 인증이 필요하게 구성되어 있다.
즉, /api/signup
, /api/login
과 같은 인증이 없어야 하는 요청도 막히는 것이다.
✅ 해결 방법: Spring Security 설정에서 특정 경로만 허용하기
// src/main/java/com/snapnote/config/SecurityConfig.java
@Configuration
@EnableWebSecurity
public class SecurityConfig {
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.csrf(csrf -> csrf.disable()) // CSRF 비활성화
.authorizeHttpRequests(auth -> auth
.requestMatchers("/api/signup", "/api/login").permitAll() // ✅ 인증 없이 접근 허용
.anyRequest().authenticated() // 나머지는 인증 필요
)
.httpBasic(Customizer.withDefaults()); // 기본 인증 설정
return http.build();
}
@Bean
public PasswordEncoder passwordEncoder() {
return new BCryptPasswordEncoder();
}
}
🧪 이후 결과
/api/signup
→ 201 Created 정상 응답/api/login
→ 200 OK 정상 응답- 그 외 API는 인증이 없으면 401 유지됨 (보안 유지)
✅ 정리
문제 | 원인 | 해결 방법 |
---|---|---|
Postman으로 회원가입 API 호출 시 401 에러 | Spring Security가 인증 없이 접근 막고 있었음 | SecurityConfig 에서 .permitAll() 설정 추가 |
💡 팁
- Swagger로 테스트하려면
/swagger-ui/**
,/v3/api-docs/**
도permitAll()
해줘야 함 - 나중에 JWT 인증 붙이면 다시 인증 경로 재설계 필요
반응형
'프로젝트 > SnapNote' 카테고리의 다른 글
Spring Boot에서 JWT 인증 구현하기 (정리) (0) | 2025.05.06 |
---|---|
Spring Boot 회원가입 및 로그인 구현 + Postman 테스트 기록 (0) | 2025.05.06 |
SnapNote 프로젝트 개발환경 세팅기 (0) | 2025.04.26 |
Mac에서 MySQL 설치 후 SnapNote용 DB 생성하기 (0) | 2025.04.26 |