API klíče
Pro zavolání libovolného API endpointu z externího systému organizace je vždy potřeba předat autorizační API klíč.
📋 Způsoby předání API klíče
API klíč akceptujeme jako vlastnost apiKey
buď jako URL query parametr, nebo jako součást BODY requestu. API klíč akceptují všechny HTTP metody oběma způsoby (pokud jsou dostupné).
Formát API klíče
Pro usnadnění orientace mezi klíči je řadíme do několika skupin, přičemž typ klíče lze přímo poznat z jeho formátu.
Příklad validního formátu API klíče:
PRODPGrFxpGEtrOZfuWhnoJohUYBXuOE
*Tento API klíč neexistuje, slouží jen pro demonstraci formátu.
Skupinu API klíčů definují první 4 znaky klíče. V tomto případě to byl prefix PROD
.
Produkční klíč
Používaný ve vaší reálné aplikaci na webovém serveru
Speciální poznámky:
Při detekci hromadného scanování dat robotem můžeme nastavit dočasné rychlostní limity a provést blokaci konkrétního uživatele. Aktivitu logujeme částečně.
Vývojářský klíč
Každý váš člen (member, vývojář) má vlastní API klíč
Speciální poznámky:
Při detekci hromadného scanování dat zákazníků, objednávek a dalších citlivých dat posíláme upozornění správci organizace. Probíhá podrobné logování aktivity.
Systémový klíč
Systémový klíč pro organizaci BizKitHub. Umí obcházet všechna omezení a oprávnění
Speciální poznámky:
Nemá nastavené žádné omezení. Při detekci neobvyklé aktivity můžeme poslat upozornění správci organizace.
Pravidla pro generování API klíče
- Klíč splňuje regulární výraz /^(PROD|DEV_|ROOT)([a-zA-Z0-9]{28})$/
- Délka celého klíče je vždy 32 znaků
- Celý klíč je vždy unikátní v celé BizKitHub databázi napříč organizacemi
- Obsahuje prefix s typem klíče, který má právě 4 znaky
- Uvnitř klíče obsahuje 28 znaků
- Znaky uvnitř klíče vznikají náhodným generátorem
- Znaky uvnitř klíče mají různou velikost, mohou obsahovat znaky anglické abecedy a čísla
🔧 Kontrola formátu
Pro validaci formátu použijte funkci parseApiKey(apiKey)
.
Ověření klíčů
Při zpracování všech API požadavků systém pokaždé ověřuje předaný API klíč. Všechny vystavené klíče včetně historie a jejich nastavení ukládáme do systémové tabulkycas__organisation_api_key
, která byla navržena pro vysoký výkon čtení a aktualizace statistik použití.
Workflow ověření:
Ověření předání klíče (pokud nebyl klíč předán, vyhazujeme chybu "Parameter apiKey is always required.")
Ověření formátu klíče (použijeme regulární výraz pro ověření formátu dle této specifikace)
Ověření existence klíče v databázi (požádáme centrální registr klíčů o vydání záznamu o klíči a jeho nastavení)
Ověření expirace klíče (na základě databázového záznamu ověříme, zda je klíč aktivní a nebyl zatím expirován)
Ověření rate-limit počtu požadavků (byl překročen maximální počet požadavků na API s tímto klíčem?)
Načtení a ověření rolí (podle typu klíče požádáme databázi o nastavené role, a ověříme, zda můžeme provolat konkrétní API endpoint)
Provedení API požadavku (pokud všechna pravidla prochází korektně, provedeme API požadavek)
Omezení klíčů
Každý vygenerovaný klíč podléhá předem nastavenému omezení, které bylo navrženo pro ochranu dat organizace a zajištění stability hlavního systému.
Skupina | Omezení počtu requestů | Speciální komentář |
---|---|---|
PROD | 500 000 / min | Při detekci hromadného scanování dat robotem můžeme nastavit dočasné rychlostní limity a provést blokaci konkrétního uživatele. Aktivitu logujeme částečně. |
DEV_ | 1 000 / min | Při detekci hromadného scanování dat zákazníků, objednávek a dalších citlivých dat posíláme upozornění správci organizace. Probíhá podrobné logování aktivity. |
ROOT | ∞ | Nemá nastavené žádné omezení. Při detekci neobvyklé aktivity můžeme poslat upozornění správci organizace. |
Bezpečnostní doporučení
✅ Doporučené postupy
- • Nikdy nevystavujte API klíč v klientském kódu
- • Používejte HTTPS pro všechny API požadavky
- • Pravidelně rotujte API klíče
- • Monitorujte využití API klíčů
- • Používejte DEV klíče pro vývoj a testování
❌ Co se vyhnout
- • Ukládání klíčů v repozitářích
- • Sdílení klíčů mezi vývojáři
- • Používání PROD klíčů pro testování
- • Logování API klíčů do souborů
- • Odesílání klíčů přes nezabezpečené kanály
Příklady použití
URL Query parametr
GET https://api.bizkithub.com/v1/users?apiKey=PRODPGrFxpGEtrOZfuWhnoJohUYBXuOE
POST Body
POST https://api.bizkithub.com/v1/users
Content-Type: application/json
{
"apiKey": "PRODPGrFxpGEtrOZfuWhnoJohUYBXuOE",
"email": "user@example.com",
"name": "John Doe"
}
JavaScript/Node.js
const response = await fetch('https://api.bizkithub.com/v1/users', {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
});
// Nebo s query parametrem
const response = await fetch('https://api.bizkithub.com/v1/users?apiKey=YOUR_API_KEY');
Jak získat API klíč?
API klíče můžete spravovat v administračním rozhraní BizKitHub platformy.