Anropsinformation - versionspaket 16.1
Web Services Security Header och SAML v 2.0 Assertions
Bilaga till handboken för apoteks- och vårdaktörer
Dokumentet specificerar säkerhetsheaderns struktur och innehåll och är normerande för att kunna nyttja tjänsterna. Samtliga av E-hälsomyndighetens egendefinierade attribut redovisas.
1. Inledning
Detta dokument specificerar den struktur och innehåll som säkerhetsheadern måste ha för att ett anrop ska kunna accepteras av de tjänster som tillhandahålls av E-hälsomyndigheten.
Med struktur och innehåll avses i första hand de av E-hälsomyndigheten definierade SAML v2.0 attribut.
2. Definitioner
SAML |
Security Assertion Markup Language |
SOAP |
Simple Object Access Protocol |
3. Referenser
Här ges referenser till andra dokument. Generellt gäller att senaste version av dokumenten avses.
1 |
Extern kravspecifikation E002 Behörighetsstyrning |
Beskriver roller, deras attribut och behörigheter. |
4. Säkerhetsheader
För att ett anrop ska kunna genomföras krävs att tre olika intyg bifogas i säkerhetsheadern.
De intyg som ska skickas med är: 1) Autentiseringsintyg (SAML-Assertion), 2) Auktorisationsintyg och 3) Infodataintyg. Se bild 1.
Intygen beskrivs i detalj under respektive kapitel. Det som är gemensamt för alla intyg är att de ska vara enligt SAML v2.0 och signerade med en XML-signatur.
De tre intygen hålls ihop med ett egendefinierat attribut, connectedAssertionId.
Attributet sätts för auktorisationsintyget och informationsintyget och ska ha samma värde som autentiseringsintygets assertionId.
Attributet är en del av den informationen som signeras och på så vis hålls intygen ihop på ett säkerhetsmässigt tillfredsställande sätt.
Exempel på SOAP-meddelande med säkerhetsheader och tre intyg :
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion">
<soapenv:Header>
<wsse:Security >
<saml2:Assertion …> ... </saml2:Assertion>
<saml2:Assertion …> ... </saml2:Assertion>
<saml2:Assertion …> ... </saml2:Assertion>
</wsse:security>
</soapenv:Header>
... |
5. Autentiseringsintyg
Identifierar den anropande användaren. Validering sker att AuthnContextClassRef har angivits. Detta är en del av det AuthnStatement som ingår i ett SAML v2.0 intyg.
Attributen anges som en del av det AttributeStatement som ingår i intyget enligt SAML v2.0 standarden. Attribut ska namnges enligt urn:apotekensservice:names:federation:<attributnamn> där <attributnamn> byts ut enligt följande tabell.[1] Intyget ska signeras.
DirectoryID |
255 |
Obligatorisk .
Beskriver biljettinnehavarens unika ID i den katalog som aktören i fråga är ansluten till och som anges vid etablering av federation mot/med denna aktör. |
OrganizationID |
25 |
Obligatorisk .
Globalt unikt ID för aktören för vars räkning biljetten är utställd för. Ska vara antingen ett svenskt organisationsnummer eller OID (Object Identifier).
OID ska vara registrerat hos en av IETF(Internet Engineering Task Force) accepterad utfärdare som t ex ANSI (American National Standards Institute ) eller SIS (Swedish Standards Institute) |
Ett avkortat exempel på ett autentiseringsintyg där DirectoryID har värdet SUGO56 och OrganizationID har värdet 2321000040.
<Assertion . . .>
. . .
<AttributeStatement>
<Attribute Name="urn:apotekensservice:names:federation:attributeName:DirectoryID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<AttributeValue>SUGO56</AttributeValue>
</Attribute>
<Attribute Name="urn:apotekensservice:names:federation:attributeName:OrganizationID" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<AttributeValue>2321000040</AttributeValue>
</Attribute>
</AttributeStatement>
</Assertion> |
6. Auktorisationsintyg
De attribut som ingår i auktorisationsintyget används dels för att avgöra vilken roll som den autentiserade användaren agerar som, och dels ytterligare rättighetskontroller utöver den grundbehörighet som rollen medför.
Exempel: En användare i rollen "förskrivare" har rätt att anropa tjänster som är relaterade till förskrivning av läkemedel. Ytterligare kontroller sker inne i tjänsten så att kombination av det tilltänkta läkemedlet och användarens förskrivningsrätt inte är i konflikt.
Attributen anges som en del av det AttributeStatement som ingår i intyget enligt SAML v2.0.
Intyget ska signeras av utställaren.
Attribut ska namnges enligt urn:apotekensservice:names:federation:<attributnamn> där <attributnamn> byts ut enligt följande tabell.[2]
Notera att en del attribut gäller för samtliga roller, medan andra bara hör till en viss roll. För detaljer, se dokumentet "Extern kravspecifikation E002 Behörighetsstyrning" [1]. Där framgår det vilka attribut som är obligatoriska beroende på vilken roll som anges. Vilka attribut som alltid är obligatoriska anges i nedanstående tabell.
apoteksId |
13 |
Unik identitet (GLN-kod) för apotek som den autentiserade användaren arbetar för. Ifall det är en supportfunktion som står bakom anropet, ska man ange den GLN-kod som tillhör det apotek man agerar på uppdrag av. |
arbetsplats |
35 |
Lokalitet i klartext (adress 1).
Exempelvis Vårdcentralen Humlan eller Privat, kirurgi/ortopedi. |
arbetsplatskod |
13 |
Arbetsplatskod eller grupparbetsplatskod |
assertionType |
- |
Obligatorisk .
Ska sättas till: AuthorizationData |
befattningskod |
6 |
Befattningskod. |
connectedAssertionId |
64 |
Obligatorisk .
Länk till autentiseringsinformationen. Ska ha samma värde som det id som unikt identifierar autentiseringsintyget. |
efternamn |
35 |
Efternamn. |
fornamn |
35 |
Förnamn. |
forskrivarkod |
7 |
Förskrivarens individuella 7-ställiga förskrivarkod eller förskrivarens gruppförskrivarkod då individuell kod saknas. |
legitimationskod |
6 |
Legitimationskod i Socialstyrelsens register över personer med legitimation för yrke på hälso- och sjukvårdens område. |
personnummer |
12 |
Personnummer för privatperson som anropar tjänst. |
postadress |
35 |
Arbetsplatsens gatuadress (Adress 2). |
postnummer |
5 |
Arbetsplatsens postnummer. |
postort |
35 |
Arbetsplatsens postort. |
roll |
- |
Obligatorisk .
Den roll som den autentiserade användaren agerar som. Sluten värdemängd, en av följande:
FORSKRIVARE
LEG_VARDPERSONAL
EJ_LEG_VARDPERSONAL
FARMACEUT_APOTEK
PERSONAL_APOTEK
PRIVATPERSON
BATCH_ANVANDARE |
telefonnummer |
15 |
Telefonnummer till användaren eller arbetsplatsen. |
telefonnummerDirekt |
15 |
Telefonnummer direkt till användaren. |
yrkeskod |
2 |
Yrkeskod |
Ett exempel på ett auktorisationsintyg där autentiseringsintyget har ett assertionId med värdet 123456789 och attributet yrkeskod angivits till värdet LK (läkare) kan se ut enligt följande.
<Assertion . . .>
. . .
<AttributeStatement>
<Attribute Name="urn:apotekensservice:names:federation:attributeName:connectedAssertionId"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri ">
<AttributeValue>123456789</AttributeValue>
<Attribute Name="urn:apotekensservice:names:federation:attributeName:assertionType"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri ">
<AttributeValue>AuthorizationData</AttributeValue>
<Attribute Name="urn:apotekensservice:names:federation:attributeName:yrkeskod"
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri ">
<AttributeValue>LK</AttributeValue>
</Attribute>
</AttributeStatement>
</Assertion> |
7. Informationsintyg
De attribut som ingår i informationsintyget används i första hand för spårbarhet och innehåller information om anropande system eller applikation.
Attributen anges som en del av det AttributeStatement som ingår i intyget enligt SAML v2.0.
Attribut ska namnges enligt urn:apotekensservice:names:federation:<attributnamn> där <attributnamn> byts ut enligt följande tabell. [3]
connectedAssertionId |
64 |
Obligatorisk.
Länk till autentiseringsinformationen. Ska ha samma värde som det id som unikt identifierar autentiseringsintyget. |
assertionType |
-- |
Obligatorisk.
Ska sättas till: InfoData |
requestId |
20 |
Unikt id för anropet hos anropande system. |
systemnamn |
30 |
Namn på anropande system. |
systemversion |
25 |
Version på anropande system. |
systemIp |
53 |
IP adress för anropande system. Anges som IPv4 eller IPv6. |
|
|
|
Versionshistorik
2.0 |
2014-04-25 |
Inlagd i ny mall.
Apotekens Service har ersatts med eHälsomyndigheten. |
3.0 |
2014-10-13 |
3, Lagt till referens till E002 Behörighetsstyrning.
5, Uppdaterat fältet DirctoryID och exempel
6, Uppdaterat fälten befattningskod, forskrivarkod, legitimationskod och roll. Förtydligat inledande text för auktorisationsintyget.
6, Tagit bort fältet organisationsnummer, eftersom detta inte ska användas av någon av de externa rollerna. Istället ska de ange OrganizationId i autentiseringsintyget.
6, Lagt till rollen BATCH_ANVANDARE. Förtydligat vilken information som ska anges i apoteksId när anrop kommer från supportpersonal. |
4.0 |
|
Förtydligat att denna sida gäller versionspaket 16.1 |
5.0 |
|
Grammatiska rättningar |
6.0 |
|
Bytt namn på sida från Säkerhetsheader till Anropsinformation |
[1] Observera att detta gäller under en övergångsperiod tills etablerad identitetsfederation finns på plats
[2] Observera att detta gäller under en övergångsperiod tills etablerad identitetsfederation finns på plats
[3] Observera att detta gäller under en övergångsperiod tills etablerad identitetsfederation finns på plats