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:

  1. 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).

  2. 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

  3. 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)

  4. Autentimise käigus pärib OAuth server andmebaasist kliendi profiili (samm 2) ning genereerib piiratud ajalise kestusega JWT tokeni.

  5. JWT tokenisse sisestab autoriseerimisserver selle kliendi tegutsemisõigused (JWT claims). Lõpuks allkijastab tokeni, et tagada selle võltsimiskindlus

  6. 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.

  7. 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)