Nastavenie autentifikácie API PSB s OAuth2: client credentials, tokeny a multi-tenant prístup krok za krokom.
API PSB od eConnect používa OAuth 2.0 na autentifikáciu. Každá API požiadavka obsahuje Bearer token, ktorý získate z Identity Server eConnect. Tento token je platný jednu hodinu a obsahuje všetky informácie, ktoré PSB potrebuje na určenie toho, kto ste, v mene akej organizácie pracujete a čo máte povolené robiť.
V tomto článku prejdete celým procesom autentifikácie: od pochopenia autentifikačného modelu po žiadanie a používanie tokenov.
PSB pracuje so štyrmi vrstvami identifikácie. Každá vrstva odpovedá na inú otázku a spoločne určujú prístup k API.
Vrstva 1: Aplikácia (clientId + clientSecret)
Identifikuje softvér, ktorý sa pripája k PSB. Softvérový partner spravidla používa jedinú sadu clientId/clientSecret pre všetkých svojich koncových zákazníkov. To zjednodušuje onboarding: koncoví zákazníci musia vyplniť menej technických údajov a pravdepodobnosť konfiguračných chýb je menšia. Všetky clientId majú rovnaký scope (ap), a teda rovnaké funkčné oprávnenia.
Vrstva 2: Koncový zákazník (username + password)
Identifikuje, v mene akej organizácie sa pracuje. Pre každého koncového zákazníka eConnect vytvorí PSB používateľský účet prepojený s jedným alebo viacerými partyId (číslo obchodnej komory, DIČ, OIN, belgické číslo podniku). Pri toku Resource Owner Password Credentials zadáte username a password, ktoré určujú, ku ktorým party máte prístup. Pri toku Client Credentials to nie je potrebné, pretože oprávnenia sú priamo prepojené s aplikáciou. Používateľské meno a heslo sa zvyčajne poskytujú priamo koncovému zákazníkovi; koncový zákazník ich potom sám zdieľa s dodávateľom softvéru. Pri vytváraní používateľského účtu koncového zákazníka v rámci vlastného PSB tenantu (napríklad pre integráciu 4PS Business Central) nesmie heslo obsahovať špeciálne znaky, s výnimkou výkričníka (!).
Vrstva 3: Prostredie (tenantId) Poskytuje administratívne oddelenie medzi prostrediami. Každý koncový zákazník zvyčajne dostane vlastný tenant, čo zaručuje úplné oddelenie správ, konfigurácie a logovania. Niektorí softvéroví partneri umiestňujú viacerých koncových zákazníkov do jedného tenantu na centrálnu správu; iní volia samostatný tenant pre každého zákazníka pre maximálnu izoláciu. Tenanty sa nedajú zlúčiť, ale používateľské účty sa dajú upraviť alebo rozšíriť.
Vrstva 4: Logovanie (subscription key, legacy)
Header Subscription-Key bol pôvodne určený na identifikáciu v log súboroch API. Pre API PSB tento header už nie je povinný. Ak ho pošlete, hodnota musí byť platná. eConnect niekedy stále vydáva subscription key, pretože umožňujú sledovanie každej požiadavky v logoch ku konkrétnemu softvérovému partnerovi. Poznámka: pre platformu eConnect (platform.econnect.eu) je subscription key stále povinný.
Token sa žiada odoslaním POST požiadavky na endpoint /connect/token Identity Servera.
https://accp-identity.econnect.euhttps://identity.econnect.euToto je odporúčaný tok pre integrácie server-server. Odošlete iba svoj clientId a clientSecret.
POST /connect/token HTTP/1.1
Host: identity.econnect.eu
Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials
&client_id=vas-client-id
&client_secret=vas-client-secret
&scope=ap
Pri tomto toku zadáte aj používateľské meno a heslo. Je to užitočné, keď sú oprávnenia viazané na konkrétneho koncového používateľa.
POST /connect/token HTTP/1.1
Host: identity.econnect.eu
Content-Type: application/x-www-form-urlencoded
grant_type=password
&client_id=vas-client-id
&client_secret=vas-client-secret
&username=vase-meno-pouzivatela
&password=vase-heslo
&scope=ap
Pri úspešnej požiadavke dostanete JSON objekt obsahujúci access token:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
"expires_in": 3600,
"token_type": "Bearer",
"scope": "ap"
}
Pole expires_in udáva, koľko sekúnd je token platný. Predvolená hodnota je 3600 sekúnd (1 hodina).
Token Bearer zahrňte do headera Authorization pri každej API požiadavke na PSB:
GET /api/v1/me HTTP/1.1
Host: psb.econnect.eu
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...
PSB validuje token pri každej požiadavke. Ak je token neplatný alebo vypršaný, dostanete odpoveď 401 Unauthorized.
Bearer token je platný 3600 sekúnd. Po vypršaní musíte požiadať o nový token cez ten istý endpoint /connect/token. Neexistuje samostatný refresh tok: jednoducho zopakujete žiadosť o token.
V praxi je najlepšie požiadať o nový token krátko pred vypršaním aktuálneho, napríklad po 3500 sekundách. Tým sa zabráni zlyhaniu API volania kvôli vypršanému tokenu, kým je požiadavka na ceste.
1. Token vyžiadaný → platný do t+3600s
2. Po ~3500s: nový token → starý token ešte ~100s platný
3. Prepnutie na nový token
Token uložte vo Vašej aplikácii a používajte ho pre viacero požiadaviek. Nežiadajte nový token pri každom API volaní, pretože to zbytočne zaťažuje Identity Server.
Štandardne softvérový partner používa jednu sadu clientId/clientSecret pre všetkých koncových zákazníkov. V niektorých situáciách je vhodné používať viacero sád:
clientId pre akceptačné prostredie (accp-identity.econnect.eu) a pre produkciu (identity.econnect.eu). Tým sa zabráni náhodnému použitiu testovacích údajov v produkcii.clientSecret môže predstavovať bezpečnostné riziko. So samostatným clientId na zákazníka sa obmedzí škoda v prípade úniku prihlasovacích údajov.clientId iba s potrebnými oprávneniami.Zrušenie clientSecret sa týka iba prislúchajúceho clientId. Ostatní zákazníci alebo integrácie nie sú dotknutí.
AuthorizationclientId alebo clientSecret je nesprávnyapscope=ap do Vašej žiadosti o tokenclient_credentials alebo password ako grant_typeAk dostanete 401 pri API volaní na PSB, najprv skontrolujte, či je token ešte platný. Vo väčšine prípadov vypršal a stačí vyžiadať nový token.
Nasledujúci diagram ukazuje, ako aplikácia vyžiada token z Identity Servera a potom tento token použije na volanie API PSB.
Kompletná API referencia vrátane všetkých endpointov a formátov požiadaviek/odpovedí je k dispozícii v interaktívnej Swagger dokumentácii.
Zobraziť dokumentáciu API PSB