Preskoči na glavno vsebino

Autentifikácia

ABRA Flexi podporuje niekoľko spôsobov autentifikácie

Avtor: Petr Pech
  • HTTP autentifikácia

  • JSON autentifikácia

  • SAMLv2*

  • OpenID*

* Podporované iba pri lokálnej inštalácii. Dostupnosť je obmedzená licenciou ABRA Flexi. Konfiguruje sa vo webovom rozhraní servera na adrese /admin/auth-settings.

HTTP autentifikácia

Jednoduchá HTTP autentifikácia je pôvodný spôsob overovania používateľov pri prihlasovaní do webového rozhrania ABRA Flexi WUI. Zároveň je to jedna z možností autentifikácie používateľov REST API. Stačí s každou HTTP požiadavkou posielať autentifikačnú hlavičku. Ak hlavičku neuvediete, dôjde k presmerovaniu na prihlasovací formulár, prípadne bude vrátený status 401 Authorization required (požiadavka na HTTP autentifikáciu).

Volania REST API sa snažíme detekovať a naďalej ponúkať HTTP autentifikáciu. Ak by detekcia zlyhala alebo bude potrebné riadiť spôsob autentifikácie, je možné využiť parameter ?auth=http (viď parametre URL).

Ukážka komunikácie s jednoduchou HTTP autentifikáciou pomocou príkazu curl:

curl -L -v -u winstrom:winstrom 'https://demo.flexibee.eu:5434/c/demo/adresar.xml?detail=custom:kod&limit=1'
⋮ * Server auth using Basic with user 'winstrom' > GET /c/demo/adresar.xml?detail=custom:kod&limit=1 HTTP/1.1 > Host: demo.flexibee.eu:5434> Authorization: Basic d2luc3Ryb206d2luc3Ryb20= > User-Agent: curl/7.54.1 > Accept: */* > < HTTP/1.1 200 OK < Cache-Control: private, max-age=0, no-cache < Set-Cookie: lang=cs;Version=1 < Vary: Accept < Content-Type: application/xml < Content-Length: 150 < Via: 1.1.loadbal-fra-1.c.flexibee.eu <      755  AAA  

Pre ukážku autentifikácie v PHP viď reálne príklady seriálu API.

Jednoduchú HTTP autentifikáciu možno zasielať aj priamo v URL adrese, ktorá môže vyzerať napríklad takto: "https://meno:heslo@adresa_servera:5434/c/firma/evidencia". Ako URL adresu zostaviť popisuje náš ďalší návod.

JSON autentifikácia (autentifikačná relácia)

Ak chcete overiť ABRA Flexi a využívať vytvorenú autentifikáciu aj pre ďalšie volania, použite API na získanie autentifikačného tokenu:

POST /login-logout/login.json

Pozn.: Metóda poskytuje výsledok iba vo formáte JSON, preto v dotaze správne špecifikujte požadovaný formát.

Volanie musí obsahovať raw data:

username

Používateľské meno

password

Používateľské heslo

otp

Jednorazové heslo (ak je vyžadované)

Príklad volania (raw data):

{    "username": "novak",    "password": "heslo"}


Úspešná autentifikácia

Výsledkom je príznak úspechu success=true a autentifikačný token authSessionId:

{    "success": true,    "authSessionId": "00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff"}

Neúspešná autentifikácia

Neúspešnú autentifikáciu signalizuje príznak success=false s upresňujúcim popisom v reťazci errors.reason:

{    "success": false,    "errors": {        "reason": "Bylo zad\u00e1no chybn\u00e9 u\u017eivatelsk\u00e9 jm\u00e9no \u010di heslo."    }}

Možnosti využitia autentifikačného tokenu

Získanú autentifikáciu možno odovzdávať v dotazoch troma spôsobmi:

  • Cookie: authSessionId: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff

  • HTTP hlavička: X-authSessionId: 00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff

  • URL query ?authSessionId=00112233445566778899aabbccddeeff00112233445566778899aabbccddeeff

Upozornenie: Pri variante v URL query budú autentifikačné údaje logované na serveri ABRA Flexi.

Aby ste udržali token platný, je potrebné udržiavať spojenie pomocou občasného volania GET /login-logout/session-keep-alive.js. My ho voláme každých 60 sekúnd, ale malo by stačiť aj raz za 30 minút.

Ak budete chcieť využiť refreshToken, je potrebné ho odoslať ako cookie requestom GET /login-logout/check, čím získate nové authSessionId.

Pomocou API je možné taktiež vykonávať odhlasovanie používateľov.

Umiestnenie prihlasovacieho formulára na svoje stránky

Ak potrebujete umiestniť prihlasovanie na svoje stránky, inšpirujte sa týmto HTML:

<form action="https://demo.flexibee.eu:5434/login-logout/login.html" method="POST"> 
Jméno: <input type="text" name="username" value=""/>
<br/>
Heslo: <input type="password" name="password"/>
<br/>
<input type="submit" name="submit" value="Přihlásit"/>
</form>

Je tiež možné pridať parameter returnUrl a určiť adresu, na ktorú má byť používateľ presmerovaný. Ak používate OTP, je potrebné pridať ešte parameter otp. Pri použití SSO (OpenID alebo SAMLv2) nie je možné túto metódu použiť.

Ste s tem dobili odgovor na svoje vprašanje?