/orders/*)는 요청 위변조를 방지하기 위한 HMAC-SHA512 서명이 필요합니다. 주문 생성, 취소, 정정 등 자산 변동이 발생하는 API가 이에 해당합니다. 조회 API는 JWT 인증만으로 충분하며 서명이 불필요합니다.POST /orders/*)에만 서명이 필요합니다. 조회 API는 JWT 인증만으로 충분합니다.Signature = HMAC-SHA512(secret_key, Method + Path + Timestamp + SHA512(Body))| 요소 | 설명 | 예시 |
|---|---|---|
| Method | HTTP 메서드 (대문자) | POST |
| Path | 요청 경로 (query string 제외) | /open/v1/orders |
| Timestamp | X-Timestamp 헤더와 동일한 값 | 1709625600 |
| SHA512(Body) | Request Body의 SHA-512 해시 (hex) | a3f8c2d1... |
POST /open/v1/orders 주문 생성 API를 호출하는 경우입니다.Method: POST | Path: /open/v1/orders | Timestamp: 1709625600
Body: {"stockCd":"USDKRW","qty":1000,"price":1350.50}"8a2e4f6c..." (128자 hex)SignPayload = "POST" + "/open/v1/orders" + "1709625600" + "8a2e4f6c...""c5d9a1b3..." (128자 hex)X-Timestamp(초 단위)와 서버 현재 시간을 비교하여 ±60초 이내의 요청만 유효하게 처리합니다. 60초를 초과한 과거 요청은 자동으로 거부되므로 Replay Attack의 유효 시간이 제한됩니다.OA_004 또는 OA_005 에러가 발생하면 아래를 확인하세요.| # | 확인 항목 | O | X |
|---|---|---|---|
| 1 | Method가 대문자인가 | POST | post |
| 2 | Path에 query string 미포함 | /open/v1/orders | /open/v1/orders?page=1 |
| 3 | Timestamp = X-Timestamp 동일 | 같은 값 | 다른 값 |
| 4 | Body = 실제 전송 body 동일 | 동일 JSON | 공백/순서 다름 |
| 5 | GET/DELETE에서 body hash 미포함 | M+P+TS | M+P+TS+hash |
| 6 | secret_key 정확 | 발급 원본 | 오타 |
| 7 | 시스템 시간 정확 | NTP 동기화 | 60초+ 차이 |