Spring Security를 학습하기 위한 첫 단계로, 우리는 ssiach2-ex1이라는 이름의 빈 프로젝트를 생성해볼 거예요.
이 이름은 다른 실습 프로젝트에서도 동일하게 사용되기 때문에 기억해두시면 좋습니다 😊
✅ 필요한 의존성 정리
우리가 사용할 의존성은 딱 두 가지입니다.
spring-boot-starter-web
spring-boot-starter-security
이제 pom.xml
파일에 아래 코드를 추가해봅시다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
이 두 의존성만으로도 Spring Security의 기본 기능이 자동으로 적용됩니다.
✅ 프로젝트 목적
이번 실습의 주요 목표는 Spring Security의 기본 설정이 적용된 상태에서 애플리케이션이 어떻게 동작하는지 확인하는 것입니다.
즉, 어떤 보안 필터들이 자동으로 활성화되고, 인증 없이 엔드포인트를 호출하면 어떤 응답을 받는지를 체험하는 게 핵심입니다.
✅ HelloController 클래스 추가하기
보안을 테스트할 수 있는 가장 간단한 방법은, 하나의 REST API를 만들어 호출해보는 것이죠.
따라서 아래와 같은 클래스를 만들어보겠습니다.
com.example.ssiach2ex1.controllers.HelloController
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello!";
}
}
이 클래스는 스프링 컨텍스트에 등록되는 웹 컨트롤러이고, /hello
경로에 GET 요청이 오면 "Hello!"를 반환하게 됩니다.
@SpringBootApplication
이 붙은 클래스가 위치한 패키지의 하위에서만 @RestController
와 같은 컴포넌트들이 스캔됩니다. 다른 경로에 만들 경우 @ComponentScan
을 명시해야 합니다.✅ 애플리케이션 실행 및 보안 패스워드 확인
이제 애플리케이션을 실행해보면, 콘솔에 다음과 같은 문구가 출력될 거예요:
Using generated security password: 93a01cf0-794b-4b98-86ef-54860f36f7f3
이 비밀번호는 매번 실행 시 자동 생성되며, 기본 사용자 user
와 함께 HTTP 인증에 사용됩니다.
✅ 인증 없이 호출해보기
터미널에서 아래 명령어를 실행해봅시다:
curl http://localhost:8080/hello
이때의 응답은 다음과 같이 401 오류입니다.
{
"status": 401,
"error": "Unauthorized",
"message": "Unauthorized",
"path": "/hello"
}
이건 우리가 인증 정보를 보내지 않았기 때문에 발생한 거예요. Spring Security가 자동으로 보호하고 있는 것이죠!
✅ 인증 정보 포함해 호출해보기
이제 사용자 이름과 비밀번호를 함께 넣어서 다시 호출해봅시다.
curl -u user:93a01cf0-794b-4b98-86ef-54860f36f7f3 http://localhost:8080/hello
정상적으로 호출된다면 다음과 같은 응답을 받게 됩니다:
Hello!
이제 인증이 정상적으로 동작하는 걸 확인할 수 있습니다! 🎉
✅ 참고: HTTP 상태 코드 정리
- 401 Unauthorized - 인증되지 않은 사용자 (로그인 실패)
- 403 Forbidden - 인증은 되었지만 권한이 없는 사용자
이 차이도 기억해두면 보안 로직을 구현할 때 큰 도움이 됩니다 👍
📌 마무리
이렇게 해서 우리는 Spring Security 기본 설정이 포함된 프로젝트를 만들고,
간단한 엔드포인트를 통해 기본 인증 흐름을 체험해봤습니다.
다음 시간에는 로그인 폼, 사용자 커스터마이징 등을 다뤄보겠습니다.
'개발자 로그' 카테고리의 다른 글
🔐 Spring Security - 엔드포인트 수준에서 인가 적용하기 (1) | 2025.07.29 |
---|---|
🌐 Spring Security 클래스 설계의 큰 그림 (0) | 2025.07.29 |
스프링 시큐리티 1장 인증, 인가 개념 (0) | 2025.07.25 |
HttpClient를 활용한 REST API 호출 (GET/POST 예제) (0) | 2025.07.18 |
Spring RestTemplate api 예시 코드 (0) | 2025.07.18 |