Anropsinformation - versionspaket 17.1
1.Tjänstekontrakt och dokumentation
E-hälsomyndighetens tjänster tillhandahålls med WSDL med tillhörande XSD-scheman. Varje tjänst implementerar en operation per tjänstekontrakt i enlighet med RIV TA.
En tjänst med namnet Tjanst i version <version> som tillhör tjänstedomänen <domän> återfinns som:
TjanstInteraction_<version>.wsdl |
Tjänstekontrakt |
TjanstResponder_<version>.xsd |
Tjänsteschema |
se.apotekensservice_<domän>_<version>.xsd |
Gemensamt schema som delas av flera tjänster inom samma tjänstedomän |
Exempel:
HamtaAktuellaOrdinationerInteraction_5.1.wsdl |
Tjänstekontrakt för tjänsten HamtaAktuellaOrdinationer version 5.1 |
HamtaAktuellaOrdinationerResponder_5.1.xsd |
Tjänsteschema för tjänsten HamtaAktuellaOrdinationer version 5.1 |
se.apotekensservice_or_7.0.xsd |
Gemensamt schema som delas av flera tjänster inom domänen OR. |
Tjänstepaketen finns att hämta på E-hälsomyndighetens kundyta i Bibliotek Releaseinformation.
Dokumentationen om E-hälsomyndighetens tjänster är grupperad per tjänstedomän och återfinns i en funktionsspecifikation med namnet <domän>_Funktionsspecifikation-<versionspaket>.pdf.
Exempel: OR_Funktionsspecifikation-17.1.pdf
2. Anrop av tjänst
Användare av webbtjänster hos E-hälsomyndigheten är aktörers system och kan delas upp i tre olika kategorier:
- Vård- och apotekspersonal
- Privatperson
- Maskinanvändare
Sweden Connect
Instruktionsmaterial för SAML-biljett
2.1 Biljettens giltighetstid
En biljett får inte gälla i mer än 60 minuter. Att E-hälsomyndigheten har valt denna maxgräns är dels för att bibehålla en hög säkerhet kring dess tjänster, dels för att underlätta för aktörer att använda versionspaket 17.1 då föregående version också hade en maxgräns på 60 minuter. En högre tidsgräns hade resulterat i lägre säkerhet för E-hälsomyndighetens tjänster.
E-hälsomyndigheten använder värdena i IssueInstant, NotBefore och NotOnOrAfter för att ta reda på en biljetts giltighetstid. IssueInstant är obligatoriskt. NotOnOrAfter är ej obligatoriskt enligt SAML-standarden men här frångår E-hälsomyndigheten standarden och säger att den är obligatorisk. Detta för att hålla en hög säkerhet i vår åtkomstlösning. NotBefore är ej obligatorisk och finns den ej med så använder E-hälsomyndigheten IssueInstant för att avgöra starttiden. IssueInstant är ett attribut i <saml2:Assertion>-elementet medan NotBefore och NotOnOrAfter finns som attribut i <saml2:Conditions>-elementet.
Observera! Alla anrop för en användare till E-hälsomyndighetens tjänster ska alltså inte göra en ny inloggning per anrop, utan istället använda sig av sin biljett så länge den är giltig.
2.1.1 Särskild hantering för PIRR/NEF avseende giltighetstid på SAML-intyg
Grundprincipen är att tjänsteanropen ska ske inom SAML-intygets giltighetstid, det vill säga 60 minuter.
I nuläget sker ett flertal tjänsteanrop av olika anledningar dagligen som då skulle ske utanför SAML-intygets giltighetstid.
För att inte få en stor påverkan har myndigheten beslutat att acceptera och ta emot tjänsteranrop med SAML-intyg där giltigheten har förfallit.
Myndigheten kommer acceptera SAML-intyg upp till och med 24 timmar utifrån starttidpunkten för intygets giltighetstid.
Denna funktionalitet finns även för OAuth2-åtkomstintyg.
Implementationsinstruktioner för systeminformation
För att bedriva ett kvalitets- och säkerhetsarbete både för anropande och svarande part är det nödvändigt med information om vilket godkänt system som skapat, förändrat eller expedierat ett recept eller annan datamängd i de register som ägs, förvaltas eller förmedlas av E-hälsomyndigheten. Därför är det ett krav att vid samtliga anrop av E-hälsomyndighetens tjänster alltid ange "systemnamn" och "systemversion". I det fall "modulversion" finns bör även detta anges. Detta är motsvarande systeminformation som tidigare skickades med biljetten.
Ett SOAP:Header-element vid namn ”ehm”, skickas med i anropet.
Attribut för systeminformation:
Namn |
Beskrivning |
Obligatorisk |
Max antal tecken |
systemnamn |
Aktörens systemnamn |
Obligatorisk |
20 |
systemversion |
Aktörens systemversion |
Obligatorisk |
20 |
modulversion |
Aktörens modulversion |
Valfri |
20 |
systeminformation |
Aktörens systeminformation |
Valfri |
100 |
Observera att
- Namespace-prefixet wsse är obligatoriskt på Security-elementet. Se exempel ovan.
3. OAuth2 tokenservice
E-hälsomyndigheten har utvecklat en ny tjänst, OAuth2 tokenservice, som kan användas för att byta ett SAML-intyg mot ett OAuth2-åtkomstintyg (access-token). OAuth2-åtkomstintyget kan sedan användas för åtkomst till myndighetens tjänster. Idag har det genererade åtkomstintyget en giltighetstid på 60 minuter. Observera - skulle ett anrop till E-hälsomyndighetens tjänster innehålla både ett OAuth2-åtkomstintyg och ett Saml-åtkomstintyg så valideras endast OAuth2-åtkomstintyget och inte Saml-åtkomstintyget.
client-secret
För att anropa OAuth2 tokenservice krävs autentiseringsuppgifter som erhålls från E-hälsomyndighetens Servicedesk. E-hälsomyndigheten skapar client och secret som tilldelas en specifik aktör. Detta lösenord används av aktörssystemen som identifiering vid all intygsväxling.
3.1 Intygsväxling av SAML-intyg mot access-token
Anropet görs med ett http-anrop till <host>/oauth2/api/oauth/token och skickas med content-type "application/x-www-form-urlencoded".
Exempel på ett request:
Inparametrar |
Beskrivning |
Obligatorisk |
grant_type |
“urn:ietf:params:oauth:grant-type:saml2-bearer“ |
Obligatorisk |
assertion |
Base64 encodat SAML2:Assertion. För privatpersonsanvändare med SAML2:Response måste detta konverteras till ett SAML2:Assertion. |
Obligatorisk |
Exempel på ett response:
Utparametrar |
Beskrivning |
Obligatorisk |
access_token |
Krypterat access_token som endast kan läsas av eHälsomyndighetens API-SP (Resource Server). Kan användas vid anrop till E-hälsomyndighetens tjänster. |
Obligatorisk |
expires_in |
Giltighetstid på det returnerade access-token i sekunder från det att det genererades. Idag 3600 sekunder (60 minuter) |
Obligatorisk |
token_type |
"bearer" |
Obligatorisk |
3.2 Vidare åtkomst till E-hälsomyndighetens API-SP (Resource Server)
För kommunikation med E-hälsomyndighetens tjänster med det genererade åtkomstintyget anropas API-SP med ett soap-anrop <host>/apisp/<tjänstens namn>Responder/V1.
Observera! Alla efterföljande anrop för denna användare till E-hälsomyndighetens tjänster ska alltså inte göra intygsväxlingen igen, utan istället använda sig av access token så länge den är giltig.
Anropet kräver access_token som en http-header. Se exempel:
3.3 OAuth2
OAuth2 är en teknisk säkerhetslösning som bygger på öppna standarder framtagna för OAuth2. Huvudsakligen
Alla roller (vård, apotek samt privatperson) kan växla ett giltigt SAML-intyg till ett åtkomstintyg (access token) för vidare åtkomst
Alla tjänster från E-hälsomyndigheten kan anropas med en oAuth2 access token
Åtkomstintyget har en giltighetstid på 60 minuter
Via förnyelseintyget (refresh token) växla till sig ett nytt åtkomstintyg. Förnyelseintyget är giltigt i 420 minuter
Skapa client-secret
Byte av client-secret
Stöd för flödet Assertion Flow/Implicit flow
Åtkomstintyget (access token) som är av typen JSON Web Token (JWT), skyddas mot insyn med hjälp av JSON Web Encryption (JWE). Åtkomstintyget är därmed inte läsbart för annan part än E-hälsomyndigheten
HTTP Basic som autentiseringsmetod för klienter. [RFC 6749, 2.3.1]
|
- Inget stöd för att invalidera eller avsluta ett giltigt åtkomstintyg innan dess giltighetstid är slut
- Inget stöd för "prompt", det vill säga påkalla slutanvändarens uppmärksamhet
- Inget stöd för introspection
|
3.4 Utökad giltighetstid för åtkomstintyg av vissa tjänster för dosaktör
Dosaktörers verksamhet skiljer sig från övriga öppenvårdsapotek. E-hälsomyndigheten stödjer därför längre giltighetstid på 720 minuter för åtkomstintyg till följande tjänster:
- GodkannDosunderlag
- GodkannProduktionsuttag
- GodkannUttag
- HamtaAktuellaOrdinationer
- HamtaExpeditionsid
- HamtaGallandeUnderlagsversion
- HamtaHkdbInformation
- HamtaHkdbkonto
- HamtaIckeaktuellaOrdinationer
- HamtaKundinfo
- HamtaProduktionsunderlag
- KontrolleraUttag
- Prisfraga
- RapporteraExpeditionLF
- RegistreraHkdbTransaktion
- SkrivUtDosrecept
- UppdateraForsaljningOppenvardFörskrivning
- UppdateraVardtagarinformation
- UppdateraBestallningsstatus
- UppdateraProduktionsinformation
Förutsättning för att få utökad giltighetstid är:
- att anropande apotek är ett dosapotek
- endast anrop till tjänsterna beskrivna ovan
- endast användning av åtkomstlösning OAuth2 och åtkomstintyg och förnyelseintyg
Åtkomstlösning i alla tjänster är via OAuth2 2.0 och åtkomstintyg. Den maximala giltighetstiden för ett dosapotek att anropa ovan tjänster utan att göra en ny inloggning är 720 minuter. Det förnyelseintyg klienten får är alltså giltigt i 660 minuter (åtkomstintyget är giltigt 60 minuter).