[Spring Security] HTTP Basic 인증
🍀 HTTP Basic 인증이란?
HTTP Basic 인증은 HTTP 프로토콜에서 가장 간단한 형태의 인증 방식으로, 클라이언트가 서버에 요청을 보낼 때 사용자 이름과 비밀번호를 Base64로 인코딩하여 인증 정보를 전달하는 방식. HTTP 표준에 정의된 기본 인증 메커니즘으로, 빠르고 간단하게 사용할 수 있음.
🍀 Spring Security 설정으로 HTTP Basic 인증 준비
1. Spring Boot 프로젝트에 Spring Security 의존성을 추가 (build.gradle에 추가)
implementation 'org.springframework.boot:spring-boot-starter-web'
implementation 'org.springframework.boot:spring-boot-starter-security'
2. 간단한 HelloController 생성
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello!";
}
}
3. 기본 자격 증명에서 사용자 이름은 'user'이고 기본 암호는 UUID(Universally Unique Identifier)형식으로 스프링 컨텍스트가 로드 될때 자동으로 생성됨.
* Spring Security에서 아무 설정도 추가하지 않은 기본 상태는 HTTP Basic 인증 방식이 활성화된 상태
🍀 Linux에서 HTTP Basic 인증을 이용한 엔드포인트 호출
cURL의 -u 플래그로 HTTP Basck 사용자 이름과 암호를 설정 할 수 있음.
1. curl -u <username>:<password> <url> 형태로 엔드 포인트 호출
> curl -u user:713eeb90-ce8f-4e78-b8fe-db9c90f0210a http://localhost:80
82/hello
Hello!%
2. <username>:<password> 문자열을 Base 64로 인코딩해서 인코딩 된 문자열을 Authorization 헤더의 값으로 사용해서 앤드포인트 호출
> echo -n user:713eeb90-ce8f-4e78-b8fe-db9c90f0210a | base64
dXNlcjo3MTNlZWI5MC1jZThmLTRlNzgtYjhmZS1kYjljOTBmMDIxMGE=
> curl -H "Authorization: Basic dXNlcjo3MTNlZWI5MC1jZThmLTRlNzgtYjhmZS1kYjljOTBmMDIxMGE=" http://localhost:8082/hello
Hello!%
🍀 Postman에서 HTTP Basic 인증을 이용한 엔드포인트 호출
1. 요청 메서드(GET, POST 등)를 선택하고 호출하려는 엔드포인트 URL을 입력
2. 상단의 Authorization 탭을 클릭
3. Type 드롭다운에서 Basic Auth를 선택
4. Username과 Password 필드에 해당 엔드포인트에서 요구하는 자격 증명을 입력
5. Send 버튼을 클릭하여 요청을 전송
🍀 HTTP Basic 인증의 장단점
장점
- 설정과 구현이 간단함.
- 표준 HTTP 프로토콜을 사용하므로 별도의 라이브러리나 확장 기능 없이 동작.
- 클라이언트가 기본적으로 지원(웹 브라우저, Postman 등).
단점
- 보안 취약성: HTTPS를 사용하지 않으면 민감한 정보가 노출될 위험이 큼.
- 사용자 경험: 매 요청마다 인증 정보가 포함되어야 하므로 효율적이지 않음.
- 세분화된 인증/권한 관리가 어려움.