1. Basic Authentication이란?
Basic Authentication은 아래 그림과 같이 가장 단순한 HTTP 인증 방식으로, 별도의 로그인 폼 없이 HTTP Header에 사용자의 ID와 PW를 인코딩하여 서버에 전송하는 방식입니다.

즉, 클라이언트(브라우저나 Postman 같은 API 도구)가 Authorization 헤더에 인코딩된 사용자 정보를 담아 요청을 보내면, 서버는 그 값을 디코딩하여 사용자 인증을 처리합니다.
Authorization: Basic <credentials>
여기서 <credentials>는 ID:PW 문자열을 Base64 인코딩한 결과입니다. 예를 들어 ID가 nhnacademy, PW가 1234라면:
nhnacademy:1234 → bmhuYWNhZGVteToxMjM0
최종 헤더:
Authorization: Basic bmhuYWNhZGVteToxMjM0
2. 동작 원리
아래 이미지는 Basic Authentication의 전체 요청–응답 과정을 단계별로 나타낸 흐름입니다.

2-1 클라이언트 → 서버 (비인증 요청)
사용자가 보호된 리소스에 접근을 시도하면, 클라이언트는 아직 인증 정보 없이 단순 요청을 보냅니다.
GET /protected/resource HTTP/1.1
Host: example.com
2-2 서버 → 클라이언트 (401 응답)
서버는 이 리소스가 인증이 필요한 요청임을 인식하고 401 Unauthorized 상태 코드와 함께 WWW-Authenticate 헤더를 전송합니다.
HTTP/1.1 401 Unauthorized
WWW-Authenticate: Basic realm="Access to the site"
이는 “이 리소스는 인증이 필요하다”는 의미입니다.
2-3 클라이언트 → 서버 (인증 정보 포함 재요청)
클라이언트는 사용자에게 ID/PW를 입력받은 후, ID:PW를 결합해 Base64로 인코딩하여 Authorization 헤더에 포함시켜 다시 요청합니다.
GET /protected/resource HTTP/1.1
Authorization: Basic bmhuYWNhZGVteToxMjM0
2-4 서버의 인증 검증
서버는 전달받은 Authorization 헤더를 디코딩하여 원래의 ID:PW를 복원하고, DB에 저장된 사용자 정보와 비교합니다.
- 일치 → 인증 성공
- 불일치 →
401 Unauthorized재응답
2-5 서버 → 클라이언트 (정상 응답)
인증이 성공하면 서버는 요청된 리소스를 정상적으로 반환합니다.
HTTP/1.1 200 OK
Content-Type: application/json
이후 클라이언트는 동일한 인증 정보를 캐싱하여 다음 요청 시 자동으로 Authorization 헤더를 포함합니다.
3. Spring Security에서의 설정
Spring Boot에서는 HttpSecurity 설정을 통해 Basic 인증을 손쉽게 활성화할 수 있습니다.
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
// 기타 보안 설정
.httpBasic(withDefaults()); // Basic 인증 활성화
return http.build();
}
이 설정을 추가하면 Spring Security는 자동으로 Basic 인증 요청을 감지하고, 인증되지 않은 사용자가 접근할 경우 브라우저 로그인 팝업을 띄웁니다.
이 팝업이 바로 우리가 흔히 보는 “아이디 / 비밀번호 입력창”입니다.
4. 특징 및 주의점
장점
- 구현이 매우 간단하고 별도의 인증 서버가 필요 없습니다.
- 테스트나 내부 API 인증용으로 빠르게 적용 가능합니다.
단점
- 매 요청마다 ID/PW가 함께 전송되므로 반드시 HTTPS 환경에서 사용해야 합니다.
- JWT나 세션 기반 인증에 비해 확장성이 낮습니다.
- Base64는 암호화가 아닌 단순 인코딩이므로 보안상 취약합니다.
5. Authorization 헤더 구조 요약
| 항목 | 내용 |
|---|---|
| 헤더 이름 | Authorization |
| 인증 타입 | Basic |
| credentials | <ID>:<PW>를 Base64로 인코딩한 문자열 |
| 예시 | Authorization: Basic bmhuYWNhZGVteToxMjM0 |
Reference
마무리하며
오늘 정리한 Basic Authentication은 JWT, OAuth2 같은 토큰 기반 인증의 기초가 되는 개념입니다. HTTP의 기본 헤더 구조와 인증 메커니즘을 이해하면 나중에 게이트웨이에서 인증·인가를 설계할 때 훨씬 수월합니다.
단순하지만 중요한 출발점, Basic Authentication을 확실히 이해하고 다음 단계로 넘어가면 Spring Security의 흐름이 한결 명확해질 것입니다.
'백엔드' 카테고리의 다른 글
| [프로젝트] 실시간 강의실 예약 시스템 개발(어드민 WS대회) (0) | 2025.11.02 |
|---|---|
| [Spring Boot] DI(Dependency Injection) (2) | 2025.10.13 |
| [Spring Boot] Spring IoC - 컨테이너, Bean 등록/스코프/생명주기 (0) | 2025.10.11 |
| [Spring Boot] Spring IoC - 개념 (0) | 2025.10.11 |
| [SpringBoot] Bean이란? (0) | 2025.10.11 |