Verifikace doplňků
Pro zajištění bezpečnosti a autenticity komunikace mezi platformou Upgates a vaším doplňkem využíváme digitální podpisy.
Co je to digitální podpis?
Digitální podpis je způsob, jak ověřit, že daná data:
- skutečně pocházejí od vás,
- nebyla cestou nijak upravena,
- jsou aktuální a důvěryhodná.
Data podepisujeme privátním klíčem a vy si je můžete zkontrolovat veřejným klíčem metodou OPENSSL_ALGO_SHA256. Podpis můžete nalézt v každém těle požadavku pod klíčem signature_v2.
Kdy a co se podepisuje?
Každý důležitý požadavek, který posíláte na váš doplněk, obsahuje:
- Vlastní data (např. informace o aktivaci doplňku),
- Klíč
signature_v2s digitálním podpisem.
Příklady podepisovaných událostí:
Doplňující informace
- Z podepisovaných dat je vyjmut
current_admin_language. - Jednotlivá podepisovaná data naleznete u každého endpointu.
- Doporučujeme vždy načítat aktuální veřejný klíč při ověřování podpisu a neukládat jej u sebe pro pozdější použití. Důvodem je možnost změny klíčů.
Příklad ověření podpisu v PHP
{} Signature PHP
$data = implode(";",[...]);
$signature = 'a0e0a3e7689bd4c80e4d6ffcccb05235b864e1d0';
$signaturePublicKey = file_get_contents("https://files.upgates.com/addons/signature/api.signature.pub.key");
$verify = openssl_verify($data, base64_decode($signature), $signaturePublicKey, OPENSSL_ALGO_SHA256);
Doporučení pro vývojáře
- Neukládejte veřejný klíč natrvalo. Při každém požadavku jej načtěte z oficiální URL.
- Pečlivě dodržujte pořadí a výčet podepisovaných položek – specifikaci najdete u každého endpointu.
- Validaci podpisu provádějte vždy před zpracováním požadavku.