Hitelesítés (Authentication)
A Partner API-hoz intézett minden kérést HMAC-SHA256 kéréshitelesítéssel kell aláírni. Ez biztosítja, hogy a kérések hitelesek legyenek, és ne legyenek módosítva az átvitel során.
Kötelező fejlécek (Required Headers)
| Fejléc | Leírás |
|---|---|
X-API-Key | Az Ön szervezeti API-kulcsa |
X-Timestamp | Aktuális Unix időbélyeg másodpercben (pl. 1711000000) |
X-Nonce | Egyedi sztring kérésenként (UUID v4 ajánlott) |
X-Signature | A kérés HMAC-SHA256 hex aláírása |
Aláírás létrehozása (Signature Construction)
Az aláírás egy pontokkal elválasztott üzenetsztring összeállításával és az API-kulcs titkos kulcsával történő aláírásával jön létre:
message = "{timestamp}.{nonce}.{method}.{path}.{body}"
signature = HMAC-SHA256(apiKeySecret, message).hexDigest()
Az üzenet összetevői pontokkal (.) összekapcsolva:
- timestamp — Unix időbélyeg másodpercben (ugyanaz az érték, mint az
X-Timestampfejlécben) - nonce — Ugyanaz az érték, amelyet az
X-Noncefejlécben küldött - method — A HTTP metódus nagybetűkkel (pl.
GET,POST) - path — A teljes kérési útvonal (pl.
/v2/partners/products/tickets) - body — A nyers JSON kéréstest sztring. Törzs nélküli GET kéréseknél használjon üres sztringet:
""
Az eredményül kapott HMAC-kivonatot kisbetűs hexadecimális formátumban kell kódolni.
Példák
API_KEY="your-api-key"
API_SECRET="your-api-secret"
TIMESTAMP=$(date +%s)
NONCE=$(uuidgen | tr '[:upper:]' '[:lower:]')
METHOD="GET"
REQ_PATH="/v2/partners/products/tickets"
BODY=""
MESSAGE="${TIMESTAMP}.${NONCE}.${METHOD}.${REQ_PATH}.${BODY}"
SIGNATURE=$(echo -n "${MESSAGE}" | \
openssl dgst -sha256 -hmac "${API_SECRET}" | \
awk '{print $2}')
curl -X GET "https://api.vignetim.com${REQ_PATH}" \
-H "Content-Type: application/json" \
-H "X-API-Key: ${API_KEY}" \
-H "X-Timestamp: ${TIMESTAMP}" \
-H "X-Nonce: ${NONCE}" \
-H "X-Signature: ${SIGNATURE}"Fontos megjegyzések
- Az
X-Timestampértéknek a szerver idejéhez képest 5 percen (300 másodpercen) belül kell lennie. Az elavult időbélyeggel rendelkező kéréseket a rendszer401-es hibával utasítja el. - Minden
X-Nonceértéknek egyedinek kell lennie, és csak egyszer használható. A nonce újrafelhasználása401-es hibát eredményez. - Az aláírás kiszámításához mindig a nyers, formázatlan JSON törzssztringet használja. Ne formázza szépre és ne szerializálja újra a törzset az aláírás előtt.
- Az aláírásnak kisbetűs hexadecimális kódolásúnak kell lennie. Ne használjon base64-et.