Uwierzytelnienie i autoryzacja dostępu do usług serwera FHIR bazuje na standardzie OAuth 2.0 i metodzie zgodnej z “Client Credentials Grant”. W wyniku uwierzytelnienia się i autoryzacji dostępu do usług serwera FHIR, system zewnętrzny Usługodawcy (klient) pozyskuje z Systemu P1 (serwera autoryzacji) TOKEN DOSTĘPOWY. Warunkiem uzyskania TOKENU DOSTĘPOWEGO jest posiadanie aktualnego certyfikatu do uwierzytelnienia danych, wystawionego przez Centrum Certyfikacji P1. TOKEN DOSTĘPOWY wymagany jest każdorazowo przy przekazaniu żądania wykonania operacji na serwerze FHIR. TOKEN DOSTĘPOWY umieszczany jest w nagłówku Authorization (“Authorization” - “Bearer ‘otrzymany z serwera autoryzacyjnego TOKEN DOSTĘPOWY”). TOKEN DOSTĘPOWY obejmuje dane autoryzacyjne Usługodawcy, w tym uwierzytelniony identyfikator Usługodawcy oraz jego rolę w Systemie P1.
Dostęp do danych serwera FHIR do obsługi EKOK możliwy jest dla wszystkich podmiotów uczestniczących w KSK.
Uwierzytelnienie systemu zewnętrznego Usługodawcy (klienta) realizowane jest z użyciem metody private_key_jwt przedstawionej w OpenID Connect 1.0. W procesie uwierzytelnienia i autoryzacji dostępu do usług serwera FHIR CEZ, system zewnętrzny Usługodawcy (klient) przygotowuje i przekazuje do Systemu P1 (serwera autoryzacyjnego) żądanie autoryzacji zawierające TOKEN UWIERZYTELNIAJĄCY (JSON Web Token). Pozytywna odpowiedź na żądanie autoryzacji posiada status HTTP 200. W treści odpowiedzi zwrócony jest TOKEN DOSTĘPOWY (JSON Web Token).
Struktura TOKEN UWIERZYTELNIAJĄCEGO: HEADER.PAYLOAD.SIGNATURE
Każda z sekcji z osobna zakodowana jest z użyciem Base64.
Sekcja nagłówka - obejmuje wskazanie na typ tokenu oraz o algorytm, którym został podpisany token:
{ “alg”: “RS256”, “typ”: ”JWT” } gdzie:
Sekcja danych - zawiera dane, które identyfikują system zewnętrzny i pracownika wykonującego operacje w systemie zewnętrznym. Lista wymaganych parametrów w sekcji jest następująca:
KOORDYNATOR – koordynator
Sekcję HEADER oraz PAYLOAD należy podpisać z wykorzystaniem klucza prywatnego systemu zewnętrznego (Usługodawcy) zawartego w certyfikacie do uwierzytelnienia danych (WS-Security), wystawionym przez Centrum Certyfikacji P1. W celu wykonania podpisu można wykorzystać bibliotekę dostępną na https://github.com/jwtk/jjwt.
Przekazanie żądania autoryzacji realizowane jest metodą POST (HTTP). Nagłówek żądania autoryzacji obejmuje następujące parametry:
| Kod błędu | Opis słowny | Znaczenie |
|---|---|---|
| 400 | Błędne żądanie | Podano nieprawidłowe parametry żądania. |
| 401 | Nieautoryzowany dostęp | Wskazany w żądaniu podmiot nie posiada aktywnego konta w Systemie P1 lub nie posiada żadnych uprawnienia lub token uwierzytelniający utracił ważność lub sygnatura tokenu jest niepoprawna. |
| 422 | Żądanie było poprawnie sformułowane, ale było niemożliwe do kontynuowania z powodu semantycznych błędów. | Podano nieprawidłowe parametry Tokenu autoryzacyjnego. |
| 500 | Błąd wewnętrzny | Wystąpił błąd wewnętrzny, który uniemożliwił realizację usługi. |