본문으로 건너뛰기

Basic 인증 (Basic Authentication)

Basic 인증은 HTTP 표준 인증 방식 중 하나로, 클라이언트가 API 요청을 보낼 때 헤더(Header)에 자격 증명을 인코딩하여 담아 보내는 방식입니다.

이지페이 간편결제Service ID를 기반으로 한 Basic 인증을 사용하여 가맹점을 식별합니다.


🛠️ 헤더 생성 방법 (How to Build)

이지페이 간편결제에서는 비밀번호 없이 오직 Service ID만 사용합니다.

1. 문자열 결합 (중요)

Service ID 뒤에 콜론(:) 을 붙입니다. 비밀번호 자리는 비워둡니다.

형식: [Service ID]:

🚨 주의사항

콜론(:)을 빠뜨리면 인증에 실패합니다. 반드시 ID 뒤에 콜론을 포함해야 합니다.

2. Base64 인코딩

위에서 결합된 문자열(ID + 콜론)을 Base64 알고리즘으로 인코딩합니다.

3. 헤더 설정

HTTP 요청 헤더의 Authorization 필드에 Basic (공백 포함) 접두어를 붙여 추가합니다.


💻 언어별 코드 예시

비밀번호 없이 ID와 콜론(:)만 결합하는 것이 핵심입니다.

Node.js (JavaScript)

const serviceId = "KICC_SERVICE_001";

// 1. 결합 (ID + :) 및 인코딩
// 비밀번호가 없으므로 뒤에 콜론만 붙입니다.
const credential = Buffer.from(`${serviceId}:`).toString('base64');

// 2. 헤더 생성
const headers = {
"Authorization": `Basic ${credential}`,
"Content-Type": "application/json"
};

Java

import java.util.Base64;

String serviceId = "KICC_SERVICE_001";

// 1. 결합 (ID + :) 및 인코딩
String auth = serviceId + ":";
String encodedAuth = Base64.getEncoder().encodeToString(auth.getBytes());

// 2. 헤더 값
String headerValue = "Basic " + encodedAuth;

Python

import base64

service_id = "KICC_SERVICE_001"

# 1. 결합 (ID + :) 및 인코딩
credential = f"{service_id}:"
encoded_auth = base64.b64encode(credential.encode()).decode()

# 2. 헤더 딕셔너리
headers = {
"Authorization": f"Basic {encoded_auth}",
"Content-Type": "application/json"
}

⚠️ 보안 주의사항 (Security)

  • HTTPS 필수: Basic 인증은 평문(ID)을 단순히 인코딩(Encoding)한 것이지 암호화(Encryption)한 것이 아닙니다. 탈취 시 복호화가 매우 쉬우므로, 반드시 SSL(HTTPS)이 적용된 환경에서만 전송해야 안전합니다.
  • 노출 금지: 생성된 Authorization 헤더 값이 프론트엔드(브라우저) 코드에 노출되지 않도록 주의하세요. 반드시 서버(Backend) 에서 호출해야 합니다.