Dokumentácia SOAP-like volaní API2
Testovať SOAP-ové API je možné pomocou multiplatformnej desktopovej aplikácie SoapUI alebo pomocou rozšírenia do prehliadača Wizdler, ktoré je dostupné pre prehliadače Chrome a Firefox).
Autentifikácia
Okrem HTTP autentifikácie podporujú SOAPové služby aj nasledovné druhy autentifikácie.
SOAP autentifikácia
V SOAP správach sú použité nasledovné menné priestory:
Alias | Menný priestor |
---|---|
wsse |
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd |
wsu |
http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd |
Autentifikácia je riešená formou SOAP hlavičky wsse:Security
.
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Header>
<Security xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
…
</Security>
</Header>
<Body>
…
</Body>
</Envelope>
Obsahom wsse:Security
hlavičky je element wsse:UsernameToken
, ktorého obsah závisí od konkrétneho typu použitého prihlásenia.
<UsernameToken>
…
</UsernameToken>
V elemente wsse:UsernameToken
sú povolené nasledovné elementy:
Názov | Povinný | Popis |
---|---|---|
wsse:Username |
Áno | Meno používateľa. |
wsse:Password |
Nie | Heslo. V atribúte Type je typ prihlásenia. |
wsse:Nonce |
Nie | Nonce token. |
wsse:Created |
Nie | Čas vytvorenia požiadavky. |
Podporované typy prihlásenia sú nasledovné:
Názov | Popis |
---|---|
wsse:PasswordText |
Autentifikácia menom a heslom. Je možné tiež použiť štandardný názov http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText . |
wsse:PasswordDigest |
Digest autentifikácia. Je možné tiež použiť štandardný názov http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest . |
zp:AuthToken |
Autentifikácia tokenom. |
zp:AccessToken |
Autentifikácia prístupovým tokenom. Token sa dá získať prostredníctvom služby api/2/oauth . Proces získania tohto tokenu je opísaný detailne na úvodnej stránke v
sekcii OAuth 2.0 autentifikácia |
Autentifikácia menom a heslom
Najjednoduchším spôsobom prihlásenia je pomocou mena a hesla. Prihlásenie pre používateľa user@example.com
s heslom password
bude vyzerať nasledovne:
<UsernameToken>
<Username>user@example.com</Username>
<Password Type="wsse:PasswordText">password</Password>
</UsernameToken>
Digest autentifikácia
Ďalším spôsobom prihlásenia je digest autentifikácia. Prihlásenie pre používateľa user@example.com
s heslom password
bude vyzerať nasledovne:
<UsernameToken xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<Username>user@example.com</Username>
<Password Type="wsse:PasswordDigest">lBIOj3NfZdc8YMfE4oeT8u9DosY=</Password>
<Nonce>sUjGpE2cxXrayVh/D2FE6g==</Nonce>
<wsu:Created>2014-08-08T11:15:50.587Z</wsu:Created>
</UsernameToken>
Hodnotu elementu wsse:Nonce
generuje klient. Pri každej požiadavke musí byť unikátna. Odporúčaná dĺžka hodnoty je 32 bajtov, ktoré sú následne base64-zakódované.
V elemente wsu:Created
je čas vytvorenia požiadavky. Tento čas musí byť uvedený v UTC formáte, aby sa digest hodnota vypočítaná na serveri zhodovala s tou od klienta. Nemal by byť starší ako 5 minút.
Pozn.: Server aktuálne nekontroluje unikátnosť nonce hodnoty ani vek požiadavky.
Pri tomto type prihlásenia je rozdielom oproti štandardu to, že pri výpočte digest hodnoty je potrebné namiesto hesla použiť heslo transformované pomocou hešovacej funkcie SHA-1 zakódované v hexadecimálnom tvare.
digest = sha1(nonce + created + sha1(password))
Výpočet digest hodnoty v PHP vyzerá nasledovne:
$password = 'password';
$nonce = 'sUjGpE2cxXrayVh/D2FE6g==';
$created = '2014-08-08T11:15:50.587Z';
$digest = base64_encode(sha1(base64_decode($nonce) . $created . sha1($password), true));
Autentifikácia tokenom
Autentifikačný token je možné získať z prihlasovacej služby. Následne je možné pomocou neho autentifikovať ďalšie požiadavky.
<UsernameToken>
<Username>user@example.com</Username>
<Password Type="zp:AuthToken">24HEjXM9UqgbPLUmPlHK4AKZqDY=</Password>
</UsernameToken>
Zadanie prihlasovacieho mena je v tomto prípade voliteľné. Prihlásenie však nebude úspešné v prípade, že je zadané a nezhoduje sa s menom používateľa, ktorému token patrí.
Služby
Služby sú dostupné na URL adresách:
Krajina | URL |
---|---|
SK | https://gateway.zelenaposta.sk/api/2/[service] |
CZ | https://gateway.zelenaposta.cz/api/2/[service] |