발급받은 app_key와 secret_key로 JWT 토큰을 생성하고, API 요청 헤더를 구성하는 방법을 안내합니다.
보안 등급#
모든 API는 JWT 인증이 필요하며, 주문 API는 서명이 추가로 필요합니다.| 인증 수준 | JWT | 서명 | 대상 API |
|---|
| JWT 인증 | 필요 | — | 모든 조회 API (시세, 계좌, 체결, 종목 등) |
| JWT + 서명 | 필요 | 필요 | 주문 API (POST /orders/*) |
주문 API 서명 필수주문 API(
/orders/*)는 JWT에 더해
요청 서명이 필수입니다. 조회 API는 JWT만 필요하고 서명은 불필요합니다. →
요청 서명 만들기
JWT 토큰 구조#
JWT는 Header, Payload, Signature 세 부분으로 구성됩니다.{ "alg": "HS512", "typ": "JWT" }
Payload#
{ "access_key": "발급받은_app_key" }
Signature#
HMACSHA512(base64Url(header) + "." + base64Url(payload), secret_key)
참고
JWT에는 exp, iat 등 시간 관련 claim을 포함하지 않습니다. 요청의 유효성은 X-Timestamp 헤더와 서버 시간 비교(±60초)로 검증합니다.
JWT 생성#
Python#
필요 라이브러리: pip install PyJWTJavaScript#
필요 라이브러리: npm install jsonwebtokenJava#
필요 라이브러리: io.jsonwebtoken:jjwt
요청 헤더#
모든 인증 API 요청에는 아래 헤더를 포함해야 합니다.| 헤더 | 조회 API | 주문 API | 설명 |
|---|
Authorization | O | O | Bearer {JWT_TOKEN} |
X-Timestamp | — | O | 요청 시점의 Unix timestamp (초 단위) |
X-Signature | — | O | HMAC-SHA512 서명값 |
Content-Type | O | O | application/json |
조회 API 요청 예시#
주문 API 요청 예시#
주문 API(POST /orders/*)는 X-Timestamp와 X-Signature 헤더가 추가로 필요합니다.
주의사항#
- JWT 토큰은 매 요청마다 새로 생성하는 것을 권장합니다.
- 클라이언트 시스템의 시간이 정확해야 합니다. NTP 서버와 동기화하는 것을 권장합니다.
- JWT 서명에 사용되는
secret_key는 절대 외부에 노출되지 않도록 관리해주세요.