Digiteenuste turvalisus
Digiteenuste kasutamiseks peab klient olema identifitseeritud
Identifitseerimine toimub OAuth2 protokolli abil
Kuna on masin-masin identifitseerimine, siis on kasutusel client_credentials voog
Identifitseerimine toimub eraldi autentimisserveri peal (Logixi autentimisserver), mis väljastab tokeni. See token kehtib ainult Logixi ressursiserveri peal.
Token on tavaline allkirjastatud JWT token
Kasutajate jälgimiseks kasutataksegi ainult JWT tokenit - JSESSIONID-põhist sessiooni ei kasuta
Digiteenused asuvad eraldi ressursiserveris - sama, mis praegune piloodiserver
OAuthi client_credentials voo detailsem kirjeldus on siin: https://auth0.com/docs/flows/concepts/client-credentials
OAuth protsess Logixi serveri ja TMS-i vahel on näha alloleval diagrammil
All on toodud tehnilised selgitused pildi kohta:
Logix authorization serverina kasutame valmis vabavara toodet - Keycloak server (https://www.keycloak.org/). See server tuleb eraldi protsessina käima lasta, eal tuleb seadistada autentimiseks vajalik domain (LogixDomain). Lisaks tuleb esmasel käivitamisel luua admin-kasutaja ning andmebaas klientide kontode jaoks (skeemil client credentials database).
Iga kliendi jaoks (Qstep, Mobicarnet, Tallink, Waybiller) tuleb Keycloak kasutajaliidese kaudu luua kasutajakonto koos saladusega. Kasutajakonto tunnus ja saladus tuleb edastada kliendile, et nad saaks OAuth-funktsionaalsust kasutada
Kui klient tahab Logixi digiteenuseid kasutada (näiteks edastada või pärida GS1-dokumenti), siis peab ta eelnevalt hankima OAuthi kaudu JWT tokeni (skeemil sammud 1 ja 3)
Autentimise käigus pärib OAuth server andmebaasist kliendi profiili (samm 2) ning genereerib piiratud ajalise kestusega JWT tokeni.
JWT tokenisse sisestab autoriseerimisserver selle kliendi tegutsemisõigused (JWT claims). Lõpuks allkijastab tokeni, et tagada selle võltsimiskindlus
Kui klient on tokeni kätte saanud, saab ta teha päringu GS1 dokumendi saatmiseks/saamiseks (samm 4). Vastav HTTP päring peab sisaldama Authorization-päist Bearer-tokeniga (https://en.wikipedia.org/wiki/JSON_Web_Token#Use) - tokeniks ongi seesama JWT token.
Logix API server saab päringust tokeni kätte, valideerib selle kestust, allkirja ning kliendi õigusi. Allkirja valideerimiseks peab API serveris olema seadistatud sama allkirjastamise krüptovõti mis autoriseerimisserveris. Kui kõik on korras, siis läheb päring täitmisele ja klient saab vastuse (samm 6)