EBP API Docs v0.5.12
KR

Authentication #

EBP API를 사용하기 위해 모든 요청에는 인증 정보와 무결성 검증을 위한 헤더가 포함되어야 합니다.

1. Access Key #

EBP API를 호출하기 위해서는 다음 헤더를 반드시 포함해야 합니다.

헤더명설명비고
X-Access-KeyEBP에서 발급한 스토어 및 채널별 인증 키모든 요청 필수

X-Access-Key는 EBP 시스템 접근 권한을 확인하는 데 사용됩니다. 스토어 및 채널별로 고유하게 발급되며, 보안을 위해 노출되지 않도록 관리해 주시기 바랍니다.

[!CAUTION] 유효기간 및 갱신
X-Access-Key의 유효기간은 최초 발급 후 1년입니다. 유효기간이 종료되기 전에 반드시 갱신 절차를 진행해야 하며, 만료된 키로는 API 호출이 불가합니다.

2. Signature #

모든 API 요청의 무결성을 보장하기 위해 X-EBP-Signature 헤더를 포함해야 합니다. 이 값은 SHA-256 알고리즘을 사용하여 생성합니다.

생성 규칙 (Input Rules) #

  1. Input Message 구성:
    • GET: 전체 Query String (첫 문자 ? 포함). 예) ?countryCode=UK&storeId=123
    • POST: 원본 Request Body (공백, 줄바꿈, 키 순서 등 전송되는 데이터 그대로 유지). 예) {"userNo":123,"items":["p1"]}
  2. 문자열 결합 (Concatenation): Input Message + Hash Key
    • Hash Key는 EBP에서 발급하며, 스토어별로 관리됩니다.
  3. 해싱 (Hashing): 결합된 문자열을 SHA-256 알고리즘으로 해싱합니다. (문자 인코딩은 UTF-8 권장)
  4. 인코딩 (Encoding): 해싱 결과(32바이트)를 Hex 문자열(Hex-encoded string)로 변환하여 헤더 값으로 설정합니다.

생성 예제 (Example Code) #

Java
Node.js
JavaScript(Browser)
Postman(Pre-request)
import org.apache.commons.codec.digest.DigestUtils;

/**
 * Apache Commons Codec 라이브러리를 활용한 시그니처 생성
 * @param message  GET: Query String(starts with '?') / POST: JSON Body
 * @param hashKey  EBP에서 발급한 Hash Key
 */
public String generateSignature(String message, String hashKey) {
    return DigestUtils.sha256Hex(message + hashKey);
}
const crypto = require('crypto');

/**
 * Node.js 기본 crypto 모듈을 활용한 시그니처 생성
 */
function generateSignature(message, hashKey) {
  return crypto
    .createHash('sha256')
    .update(message + hashKey)
    .digest('hex');
}
/**
 * Browser Web Crypto API를 활용한 비동기 시그니처 생성
 */
async function generateSignature(message, hashKey) {
  const encoder = new TextEncoder();
  const data = encoder.encode(message + hashKey);
  const hashBuffer = await crypto.subtle.digest('SHA-256', data);
  
  // ArrayBuffer를 Hex 문자열로 변환
  return Array.from(new Uint8Array(hashBuffer))
    .map(b => b.toString(16).padStart(2, '0'))
    .join('');
}

[!WARNING] 보안 주의사항 (Security Notice)
브라우저(Client-side) 자바스크립트에서 시그니처를 생성할 경우 소스 코드 내에 Hash Key가 외부에 노출될 위험이 매우 높습니다. 테스트 목적 외의 실제 운영 환경에서는 반드시 서버 사이드(Java, Node.js 등)에서 시그니처를 생성하여 전달하시기 바랍니다.

// 1. 설정: EBP에서 발급받은 Hash Key (환경 변수 또는 컬렉션 변수 권장)
const hashKey = pm.variables.get('hashKey') || 'YOUR_HASH_KEY';
let message = "";

// 2. HTTP Method에 따른 메시지 구성
if (pm.request.method === 'GET') {
    // URL에서 '?'를 포함한 전체 Query String 추출
    const urlString = pm.request.url.toString();
    const qIndex = urlString.indexOf('?');
    message = qIndex !== -1 ? urlString.substring(qIndex) : "";
} else {
    // Body 내의 변수({{...}})를 실제 값으로 치환한 원본 데이터 사용
    message = pm.variables.replaceIn(pm.request.body.raw || "");
}

// 3. SHA-256 해시 생성 및 헤더 설정
const signature = CryptoJS.SHA256(message + hashKey).toString();

pm.request.headers.upsert({
    key: 'X-EBP-Signature',
    value: signature
});

문의: ebp-server@lge.com

Last updated: 2026-04-24 07:45:12 © 2026 LG Electronics Inc. All rights reserved.