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) 에서 호출해야 합니다.