BackEND/Java

Spring Boot에서 Basic Authentication 적용하기 (Java 11)

mingmingIT 2025. 3. 20. 10:48

Spring Boot에서 Basic Authentication을 설정하는 방법을 단계별로 정리해보겠습니다.

1. Spring Security 의존성 추가

Spring Boot 프로젝트에서 spring-boot-starter-security를 추가해야 합니다.

<dependencies>
    <!-- Spring Boot Security -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
    </dependency>
    
    <!-- Spring Boot Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>

2. Security 설정 클래스 생성

Spring Security 설정을 직접 정의하려면 SecurityFilterChain을 설정해야 합니다.

@Configuration
@EnableWebSecurity
public class SecurityConfig {

    @Bean
    public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
        http
            .authorizeHttpRequests(auth -> auth
                .requestMatchers("/public/**").permitAll() // 공개 API
                .anyRequest().authenticated() // 그 외 인증 필요
            )
            .httpBasic(withDefaults()); // Basic Auth 활성화
        return http.build();
    }

    @Bean
    public UserDetailsService userDetailsService() {
        UserDetails user = User.withDefaultPasswordEncoder()
            .username("user")
            .password("password")
            .roles("USER")
            .build();
        return new InMemoryUserDetailsManager(user);
    }
}

3. 테스트 컨트롤러 생성

인증이 필요한 엔드포인트와 공개 엔드포인트를 만들겠습니다.

@RestController
@RequestMapping("/api")
public class TestController {

    @GetMapping("/public/hello")
    public String publicHello() {
        return "Hello, Public!";
    }

    @GetMapping("/private/hello")
    public String privateHello() {
        return "Hello, Authenticated User!";
    }
}

4. 실행 및 테스트

기본 제공되는 유저 확인

Spring Boot를 실행하면 기본적으로 user 계정과 랜덤 비밀번호가 콘솔에 출력됩니다.
이를 사용하여 인증할 수 있으며, 또는 userDetailsService에서 설정한 계정을 사용할 수도 있습니다.

Postman 또는 Curl로 테스트

1) 공개 API 테스트

 
curl -X GET http://localhost:8080/api/public/hello

응답:

Hello, Public!

2) 인증 API 테스트

curl -u user:password -X GET http://localhost:8080/api/private/hello

응답:

Hello, Authenticated User!

5. 결론

이렇게 하면 Spring Boot에서 Basic Authentication을 손쉽게 설정할 수 있습니다.
이제 보안이 필요한 API에서는 기본 인증을 통해 접근을 제어할 수 있습니다.