Autentikacija i autorizacija informacijskog sustava
Usluge CEZIH sustava koje zahtjevaju autentikaciju i autorizaciju aplikacije/informacijskog sustava koriste sigurnosne mehanizme temeljene na OAuth2 Client Credentials Grant Flow specifikaciji.
Ovaj tip autentikacije i autorizacije se koristi za pozive usluga CEZIH sustava koje ne inicira krajnji korisnik već ih zahtjeva aplikacija odnosno informacijski sustav automatski. Primjer takvih usluga su Notifikacije ili usluge dohvata podataka o terminologijama.
Za autentikaciju i potvrđivanje identiteta aplikacije/informacijskog sustava koristi se identifikator aplikacije/informacijskog sustava (client_id) i zaporka (client_secret) sukladno OAuth 2 Client Credentials Grant Flow specifikaciji.
Ove podatke svaka instanca aplikacije odnosno informacijskog sustava dobiva prilikom registracije u CEZIH sustavu. Postupak registracije je administrativni postupak gdje administrator aplikacija i informacijskih sustava koji se spajaju na CEZIH sustav unosi podatke o aplikaciji/informacijskom sustavu i zdravstvenu ustanovu/ordinacju u kojoj se ta aplikacija/informacijski sustav koristi. Prilikom ovog postupka se generiraju identifikator i zaporka koji se proslijeđuju zdravstvenoj ustanovi ili dobavljači informacijskog rješenja te ustanove kako bi se podatci mogli unjeti u aplikaciju/informacijski sustav i nakon toga koristiti za autentikaciju. Zaporka ima ograničeno vrijeme trajanja i kada istekne šalje se o tome obavijest na elektroničku poštu unesenu tjekom registracije.
Na sljedećem dijagramu je opisan slijed akcija prilikom autentikacije i autorizacije aplikacijap/informacijskih sustava korištenjem OAuth2 Client Credentials Grant Flow standarda.
Slika 12 - Autorizacija aplikacija/informacijskih sustava korisnika korištenjem OAuth2 Client Credentials Grant Flow standarda
Kako je opisano na gornjoj slici Gx aplikacija/sustav kreira zahtjev za tautorizaciju i šalje id aplikacije/informacijskog sustava (client_id) i zaporku (client_secret) koju je dobile prilikom registracije. User Identity Provider Agent provjerava provjerava poslane podatke i ukoliko su točni generira ACCESS TOKEN (JWT) te ga vraća natrag Gx aplikaciji /sustavu.
Primjer Access Tokena:
{
"access_token": "eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItNUlsX2I0cUktdWFvaEI3d244UHY3WEM2UEktU3BNbmZCRnlJZUx6QTJNIn0.eyJleHAiOjE1OTQyMTY0OTQsImlhdCI6MTU5NDIxNjE5NCwianRpIjoiZjVmNTBjMzEtNWIwNC00OWQ2LTljYmMtM2YwMWU5OTg5ZWQxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2FwcHNkZXZlbG9wZXJibG9nIiwic3ViIjoiNTlmODFhMzYtYTIyMC00ZmE4LTlhZWEtMzRlN2JhNjY4OTAxIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoicGhvdG8tYXBwLWNsaWVudC1jcmVkZW50aWFscyIsInNlc3Npb25fc3RhdGUiOiI3NTAyY2YzMS1iMjEwLTQ3NTQtYjkxOS0wN2UxZDg0OTNmYTMiLCJhY3IiOiIxIiwic2NvcGUiOiJlbWFpbCIsImNsaWVudElkIjoicGhvdG8tYXBwLWNsaWVudC1jcmVkZW50aWFscyIsImNsaWVudEhvc3QiOiIxMjcuMC4wLjEiLCJjbGllbnRBZGRyZXNzIjoiMTI3LjAuMC4xIn0.fQVsLpQJchcofA18FOSr0gtjeo01s9bMFF1ewsI-trrzzNL28QABmm_rsb4-p0iw5fGG3-bEInFe-Owxm9sZbQ_O7je_BVMDrlJEs-bAY5cLIQWVqy3P5xCsyFt-F6y89LAOCUCGI127W18zoUagLAoi5bGCIgxKled-MYRK8MQ-PcZzYCp5FkPFMv6Wd8I5m6TZJ6xK0eG79LVDPqj-s9YGfjY_n64uiT9VneYHG261SisgZ978ZMF-gkjit9CsSTQEW2cBlyeriy133s0E0ycvybLwnHYsGzRs5k8xhgqa3ZYovtZeK2SWARoNSXWQjUCBcndT9teWcZSgQxPIzw",
"expires_in": 300,
"refresh_expires_in": 1800,
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICJlYWQyMDZmOS05MzczLTQ1OTAtOGQ4OC03YWNkYmZjYTU5MmMifQ.eyJleHAiOjE1OTQyMTc5OTQsImlhdCI6MTU5NDIxNjE5NCwianRpIjoiMDQ0MDEwMjItY2QwNy00MTczLTkwMjctMTQwMGU4Yjg1MzdlIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2FwcHNkZXZlbG9wZXJibG9nIiwiYXVkIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2FwcHNkZXZlbG9wZXJibG9nIiwic3ViIjoiNTlmODFhMzYtYTIyMC00ZmE4LTlhZWEtMzRlN2JhNjY4OTAxIiwidHlwIjoiUmVmcmVzaCIsImF6cCI6InBob3RvLWFwcC1jbGllbnQtY3JlZGVudGlhbHMiLCJzZXNzaW9uX3N0YXRlIjoiNzUwMmNmMzEtYjIxMC00NzU0LWI5MTktMDdlMWQ4NDkzZmEzIiwic2NvcGUiOiJlbWFpbCJ9.9qWVA-pyBp0AZ7BUj2Z_RAlQlDSU15kyvpcwEGfXj1k",
"token_type": "bearer",
"not-before-policy": 0,
"session_state": "7502cf31-b210-4754-b919-07e1d8493fa3"
}
Kako je prikazano u primjeru sam access Token (JWT) se nalazi u polju access_token. Taj podatak Gx aplikacija/sustav treba koristiti u slijedećim koracima kako bi pristupila uslugama CEZIH sustava.
Gx aplikacija/sustav poziva uslugu CEZIH sustava i u Authorization zaglavlju HTTP poziva šalje Access Token (JWT)
Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCIgOiAiSldUIiwia2lkIiA6ICItNUlsX2I0cUktdWFvaEI3d244UHY3WEM2UEktU3BNbmZCRnlJZUx6QTJNIn0.eyJleHAiOjE1OTQyMTY0OTQsImlhdCI6MTU5NDIxNjE5NCwianRpIjoiZjVmNTBjMzEtNWIwNC00OWQ2LTljYmMtM2YwMWU5OTg5ZWQxIiwiaXNzIjoiaHR0cDovL2xvY2FsaG9zdDo4MDgwL2F1dGgvcmVhbG1zL2FwcHNkZXZlbG9wZXJibG9nIiwic3ViIjoiNTlmODFhMzYtYTIyMC00ZmE4LTlhZWEtMzRlN2JhNjY4OTAxIiwidHlwIjoiQmVhcmVyIiwiYXpwIjoicGhvdG8tYXBwLWNsaWVudC1jcmVkZW50aWFscyIsInNlc3Npb25fc3RhdGUiOiI3NTAyY2YzMS1iMjEwLTQ3NTQtYjkxOS0wN2UxZDg0OTNmYTMiLCJhY3IiOiIxIiwic2NvcGUiOiJlbWFpbCIsImNsaWVudElkIjoicGhvdG8tYXBwLWNsaWVudC1jcmVkZW50aWFscyIsImNsaWVudEhvc3QiOiIxMjcuMC4wLjEiLCJjbGllbnRBZGRyZXNzIjoiMTI3LjAuMC4xIn0.fQVsLpQJchcofA18FOSr0gtjeo01s9bMFF1ewsI-trrzzNL28QABmm_rsb4-p0iw5fGG3-bEInFe-Owxm9sZbQ_O7je_BVMDrlJEs-bAY5cLIQWVqy3P5xCsyFt-F6y89LAOCUCGI127W18zoUagLAoi5bGCIgxKled-MYRK8MQ-PcZzYCp5FkPFMv6Wd8I5m6TZJ6xK0eG79LVDPqj-s9YGfjY_n64uiT9VneYHG261SisgZ978ZMF-gkjit9CsSTQEW2cBlyeriy133s0E0ycvybLwnHYsGzRs5k8xhgqa3ZYovtZeK2SWARoNSXWQjUCBcndT9teWcZSgQxPIzw
OpenID Agent (Proxy server) provjerava Access Token (JWT) i ukoliko je validan proslijeđuje upit prema usluzi CEZIH sustava koja je tražena.