인증

굿웨어몰 커머스 API는 애플리케이션별 할당된 Access Key를 통해 요청자를 구분하며, 해당 키는 관리콘솔에서 애플리케이션 등록 시 자동 발급됩니다. 또한, Aceess Key와 함께 발급되는 App Secret은 Signature 생성 시 필요하므로 반드시 별도 보관하시길 바랍니다.

1. 인증 헤더

API 요청 시 인증된 요청인지 확인을 위해 HMAC(keyed-hash message authentication code)을 이용합니다. 요청 시 요청 헤더 - Authorization에 아래와 같은 형식으로 Signature를 전송하여야 합니다.

Authorization=CEA algorithm=HmacSHA256, access-key=<Access Key>, signed-date=<Signed Date>, signature=<Signature>

2. HMAC Signature 생성

HMAC Signature

import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AuthorizationTest {
    private static final String ACCESS_KEY = "*****";
    private static final String APP_SECRET = "*****";

    public void testAuth() {
        long signedDate = System.currentTimeMillis();
        String message = "{ \"test_params\": \"hello world\" }";
        String finalMessage = Long.toString(signedDate) + "." + message;
        String signature = generateHMACSignature(finalMessage, APP_SECRET);

        String authHeader = "CEA algorithm=HmacSHA256, access-key=" + ACCESS_KEY + ", signed-date=" + Long.toString(signedDate) + ", signature=" + signature;
    }

    public static String generateHMACSignature(String message, String secret) throws Exception {
        Mac hmacSHA256 = Mac.getInstance("HmacSHA256");
        SecretKeySpec secretKeySpec = new SecretKeySpec(secret.getBytes(), "HmacSHA256");
        hmacSHA256.init(secretKeySpec);
        byte[] signatureBytes = hmacSHA256.doFinal(message.getBytes());

        return Base64.getEncoder().encodeToString(signatureBytes);
    }
}

3. 상품 이미지 업로드 시 HMAC Signature 생성

상품 이미지 업로드 시, Signature 생성 시의 SignedDate와 조합되는 Message는 fileupload를 고정값으로 사용해 주세요.

4. 응답 오류

HTTP 상태코드메시지
400 - BAD REQUEST인증정보가 누락되었습니다.
401 - UNAUTHORIZED유효하지 않은 인증정보입니다.