본문으로 건너뛰기

HTTP Basic Authentication

HTTP 기본 인증 (Basic Auth)의 개념과 특징에 대해 알아봅니다.


HTTP Basic Authentication 이란?

HTTP 기본 인증은 웹 브라우저나 클라이언트가 서버에 사용자 이름과 비밀번호를 전송하여 자신을 인증하는 가장 단순한 방식입니다.

핵심 특징

구분내용비고
구성 요소사용자명 (Username) + 비밀번호 (Password): 문자로 연결
인코딩Base64 인코딩암호화가 아닌 텍스트 변환임
표준RFC 7617HTTP 표준 프로토콜
상태Kubernetes v1.19 이후 제거됨보안상의 이유로 사용 비권장

Basic Auth 동작 원리

HTTP 프로토콜의 Challenge-Response 메커니즘을 사용하여 인증을 수행합니다.

    sequenceDiagram
    participant C as 클라이언트
    participant S as 서버
    
    C->>S: 1. 리소스 요청 (인증 정보 없음)
    S->>C: 2. 401 Unauthorized (WWW-Authenticate: Basic 헤더 포함)
    Note over C: 사용자에게 ID/PW 입력창 표시
    C->>S: 3. 인증 정보 포함 재요청 (Authorization: Basic base64(ID:PW))
    Note over S: Base64 디코딩 후 신원 확인
    S->>C: 4. 200 OK (인증 성공 및 리소스 반환)
  

보안 취약점

  1. 암호화 부재: Base64 인코딩은 누구나 쉽게 디코딩할 수 있으므로, 반드시 **HTTPS(TLS)**와 함께 사용해야 합니다. 평문 HTTP 환경에서 사용 시 네트워크 패킷 탈취만으로 비밀번호가 노출됩니다.
  2. 로그아웃 어려움: 브라우저가 인증 정보를 메모리에 유지하므로, 브라우저를 완전히 닫기 전까지는 로그아웃이 어렵습니다.
  3. 관리의 어려움: 사용자 정보를 서버 측에서 파일이나 DB로 직접 관리해야 하므로 대규모 환경에는 부적합합니다.

Kubernetes 에서의 대체제

Kubernetes는 더 이상 Basic Auth를 지원하지 않으며, 다음과 같은 더 안전한 방식을 권장합니다.

  • X.509 Client Certificates: 인증서 기반의 강력한 인증
  • Bearer Tokens: ServiceAccount 또는 정적 토큰 사용
  • OIDC (OpenID Connect): Google, Okta 등 외부 IDP 연동
  • Webhook Token Authentication: 외부 인증 서비스에 검증 위임

기본 인증은 구조가 단순하여 이해하기 좋으나, 실무 환경(특히 Kubernetes)에서는 보안상의 이유로 더 현대적인 인증 방식을 사용해야 합니다.