인증
굿웨어몰 커머스 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
를 고정값으로 사용해 주세요.
굿웨어몰 커머스 API의 Signature는 SignedDate + '.' + Message
로 생성하며,
통상적으로 Message는 API 요청 파라미터(JSON Body)입니다. 이미지 업로드 시
Message는 fileupload
로 고정하여 Signature를 생성합니다.
4. 응답 오류
HTTP 상태코드 | 메시지 |
---|---|
400 - BAD REQUEST | 인증정보가 누락되었습니다. |
401 - UNAUTHORIZED | 유효하지 않은 인증정보입니다. |