1. Inledning

Autentiseringstjänsten syftar till stödja e-tjänster/applikationers behov av autentisering och behörighetshantering.

Tjänsten är baserad på två standarder, SAML2.0 samt OpenID Connect (OIDC). Dessa kan båda tillgodose tjänstens syfte, men gör så med två olika tekniska ramverk. SAML är den äldre av dessa två och har använts under en längre tid inom vården och de nationella tjänsterna. OIDC är en nyare teknik som bygger på OAuth2 standarden.

En aktör som vill autentisera sig via tjänsten gör detta genom att presentera ett personligt certifikat. Detta kan exempelvis vara ett SITHS certifikat. Aktörens certifikat förmedlas via mutual TLS. Aktörens attribut inhämtas från HSA-katalogen (nationell eller lokal beroende på installation). Identitetsbärare kan vara ett fysiskt kort.

Vid lyckad autentisering erhåller den e-tjänst som begärde autentiseringen att giltigt intyg enligt önskad standard (SAML2.0 eller OIDC).

draw.io

Diagram attachment access error: cannot display diagram

Bilden illustrerar ett autentiseringsflöde med tillhörande tjänsteintegrationer.

Övergripande flöde

Personal vill nyttja en e-tjänst som kräver autentisering och behörighet.

  1. Aktören måste vid ett tidigare tillfälle ha erhållit ett personligt certifikat, av en för autentiseringstjänsten pålitlig utfärdare.
  2. Aktören försöker ansluta till e-tjänsten.
  3. E-tjänsten kräver autentisering av aktören via Autentiseringstjänsten.
  4. Autentiseringstjänsten kräver att aktören identifierar sig. Detta sker via mutual TLS.
  5. Aktören identifierar sig med sitt certifikat och anger tillhörande pin-kod i applikationen NetID Enterprise.
  6. IDP:n säkerhetsställer att certifikatet är giltigt.
  7. Personliga och behörighetsstyrande attribut inhämtas via HSA-katalogen (genom RIV-TA tjänster).
  8. Intyg i form av SAML-assertion eller ID-token förmedlas till e-tjänsten som behörighetskontrollerar och ger access till aktören.

1.1. Syfte

  • Att tillhandahålla en implementation av "referensarkitekturen för behörighet och åtkomst".
  • Att tillhandahålla en nationell tjänst som ger ett gemensamt sätt att utföra autentisering och behörighetsstyrning för nationella e-tjänster.
  • Att tillhandahålla en tjänst till regionala och lokala intressenter som vill installera och drifta en egen instans av tjänsten.
  • Att på ett enhetligt, och distribuerat sätt, via HSA, kunna administrera behörighetsstyrande attribut.

1.2. Målgrupp

De huvudsakliga målgrupperna för detta dokument är: systemägare, systemförvaltare, systemarkitekter och utvecklingsteam samt Inera arkitektur & regelverk.

1.3. Referenser

KategoriReferensDokument inom kategori
PlattformsbeskrivningarP1HSA-katalog
TjänstekontraktsbeskrivningarT1

Nationella tjänstekontrakt för integration med HSA-katalogen:

  • GetAdminCredentialsForPersonIncludingProtectedPerson
  • GetCredentialsForPersonIncludingProtectedPerson
  • GetEmployeeIncludingProtectedPerson


1.3.1. Styrande dokument

1.3.2. Stödjande dokumentation

Ref

Dokument ID

Dokument/länk

R1

RIV-TA

http://rivta.se/documents.html 




1.3.3. Versionshistorik

Version

Datum

Kommentar

Utförare

0.1

 

Upprättad

1.0 rc1

 

Revidering
1.0

 

Fastställd

2. Arkitekturell översikt

Arkitekturen är baserad på standaderna SAML2.0 samt OIDC. E-tjänsterna kopplar sitt säkerhetslager (SP/RP) mot Autentiseringstjänsten via något av dessa protokoll. Själva Autentiseringstjänsten är dock bara en liten del av hela infrastrukturen för att utföra en autentisering och erhålla behörighetsstyrande attribut. Scopet för denna SAD är enbart Autentiseringstjänsten, men följande delar ingår i infrastrukturen för identitet och åtkomst.

E-tjänsterDe tjänster/system som vill använda Autentiseringstjänsten för att autentisera sina användare
Myndighets CAUtfärdar certifikat till användare. Hanterar även revokering av dessa.
Regional HSA FörvaltningFörvaltar lokal HSA-katalog. Replikering till Nationell HSA.
Nationell HSA FörvaltningFörvaltar nationell HSA-katalog. Det är gentemot denna som Autentiseringstjänsten hämtar användares attribut.
Internetstiftelsen i Sverige (IIS)Ansvarar för federationen SAMBI. Autentiseringstjänsten kan hämta ner federerat metadata härifrån.


draw.io

Diagram attachment access error: cannot display diagram

Bilden illustrerar de parter som är en del av Identitets och åtkomst integrationerna för Autentiseringstjänsten.

Autentiseringstjänsten tillhandahåller (vid lyckad autentisering) en SAML-Assertion eller ID-token (beroende på den standard som används av e-tjänsten) innehållande attribut från HSA-katalogen. Detta kan vara attribut kopplade till personen, ett medarbetaruppdrag, eller administrativa uppdrag. E-tjänsten använder sedan dessa attribut för att utföra behörighetskontroll och hantera användarinformation vid exempelvis presentation i dess tjänst eller vid audit-loggning.

Detaljerad information för SAML och OIDC är definierade i:

Förutom funktion för SAML och OIDC så tillhandahåller Autentiseringstjänsten ett GUI för administration av tjänsten. Se "Administrationsgränssnitt" senare i dokumentet.

2.1. Arkitekturella mål

2.1.1. Mål

  • Följsamhet mot "Referensarkitektur för identitet & åtkomst".
  • Följsamhet mot Nationella IT-strategin, enligt T-Boken.
  • Följsamhet mot de OASIS standarder som berörs
  • Följsamhet mot ”SAMBI SAML Profil”.
  • Följsamhet mot SAMBI:s tekniska ramverk (www.sambi.se)
  • Följsamhet mot OpenID Connect
  • Följsamhet mot HEART profile for OpenID Connect

2.1.2. Planerade avsteg

Frånsteg från ovan givna mål kan behöva göras för att tillgodose kravställning från Inera, eller i de fall två profiler är motstridiga i sina uppgifter.

2.2. Prioriterade områden

  • Skapa en tjänst baserad på etablerade ramverk och tekniker. Detta för att minska långsiktiga förvaltningskostnader och underlätta utvecklingsarbetet.
  • Basera tjänsten på standardprotokoll och följa specifikationer med så få avsteg som möjligt.
  • Utveckla tjänsten för att fungera i en moduliserad driftmiljö - Paas. Detta för att minimera kostnader, underlätta deploy, möjliggöra anpassad skalning m.m.
  • Ej bygga in "onödig" funktionalitet i tjänsten, utan nyttja externa tjänster där de lämpar sig bäst. Exempelvis för övervakning av metrics och logginsamling/sökning. Detta för att minska utvecklings och förvaltningskostnader, samt att externa tjänster oftast har mycket bättre funktionalitet än vad som kan byggas in i applikationen för rimlig kostnad.
  • Undvika proprietära lösningar som kan försvåra flytt av förvaltning.

3. Följsamhet till T-boken

3.1. Följsamhet mot T-bokens styrande principer

3.1.1. IT2: Informationssäkerhet

Förutsättningar att uppfylla

Uppfyllnad

Verksamhetskritiskt IT-stöd designas för att möta verksamhetens krav på tillgänglighet vid frånfall av ett externt beroende. Ju fler beroenden till andra komponenters tillgänglighet, desto lägre egen tillgänglighet.

Applikationen är utvecklad för att fungera i PaaS miljö (containerbaserad) för att skapa maximal flexibilitet gällande tillgänglighet.

Applikationen tillämpar lös koppling för att integrera komponenter.

  • Tjänsten själv (OIDC, SAML, REST)
  • Attributkälla (RIV-TA)
  • Certifikatförmedlare (SOAP-WS)

Då applikationen i sig har till uppgift att förmedla behörighetsstyrande attribut innebär ett bortfall av externa tjänster att applikationens uppgift inte kan uppfyllas.

Verksamhetskritiska gemensamma stödtjänster (t.ex. tillgång till behörighetsstyrande information) erbjuder möjlighet till lokala instanser som med tillräcklig aktualitet hålls uppdaterade med gemensam master.

Applikationen är en autentiserings och behörighetstjänst.

  • Lokala instanser kan skapas genom att använda samma paketerade tjänst (container i PaaS miljö, eller anpassad installation av binär) 

Krav mellan integrerade parter måste regleras, informationsägaren ska godkänna att ett visst system får agera mot informationen genom ett visst tjänstekontrakt.

Exempelvis skall enligt integrationsprocessen för den gemensamma tjänsteplattformen ett överenskommelsesnummer för en integrationsöverenskommelse registreras i samband med att man "öppnar dörren" för en viss tjänstekonsument mot en viss kombination av informationsägare och tjänstekontrakt.

Applikationen informationsförsörjs via nationella RIV-TA tjänstekontrakt.

Anslutningsprocess för HSA RIV-TA sker via informationsägaren.

Anslutning för e-tjänst gentemot applikationen sker via anslutningsavtal genom Inera.

Arkitekturen måste möjliggöra tillräcklig tillgänglighet vid flera samverkande system.

Applikationen är utformad för en hög tillgänglighet med horisontell skalning i PaaS miljö. Respektive tjänsteproducent av tjänstekontrakt skall leverera enligt SLA.

En sammantagen tolkning av tillämpliga lagar och förordningars konsekvenser för teknisk realisering av informationsfångst, utbyte och lagring.

Tjänsten hanterar personuppgifter.

  • GDPR tillämpas

Förutsättningar för spårbarhet etableras i form av loggningsregler för komponenter som deltar i säkert informationsutbyte.

Se kapitel: Spårbarhet.

Interoperabla, internationellt beprövade och för leverantörer tillgängliga standarder tillämpas för kommunikation mellan parter som har upprättat tillit.

Applikationen tillämpar standardprotokoll.

  • HTTPS/TLS
  • SAMLv2
  • OIDC 1.0
  • RIV-TA
  • SOAP-WS


3.1.2. IT3: Nationell funktionell skalbarhet

Förutsättningar att uppfylla

Uppfyllnad

Nationella tjänstekontrakt definieras med nationell täckning som funktionell omfattning. Det är möjligt för ett centraliserat verksamhetssystem som användas av alla verksamheter i Sverige att realisera varje standardiserat tjänstekontrakt. Det får inte finnas underförstådda funktionella avgränsningar till regioner, kommuner, landsting eller andra organisatoriska avgränsningar i nationella tjänstekontrakt.

Applikationen informationsförsörjs via nationella tjänstekontrakt (HSA) med SOAP-WS.

SLA ska definieras för varje tjänstekontrakt. Detta SLA ska ta hänsyn till framtida kapacitet för tjänstekontraktet med avseende på transaktionsvolym, variationer i användningsmönster och krav på tillgänglighet, i kombination med förmåga till kontinuerlig förändring.

SLA definieras i TKB som nyttjas.

Övriga SLA’er för Applikationen hanteras av systemförvaltare.

Integration ska ske över en integrationsinfrastruktur (t.ex. virtualiseringsplattform) som möjliggör uppföljning av tjänsteproducenters fullföljande av SLA.

Nationella tjänsteplattformen kan används för informationsförsörjning (HSA).

System och e-tjänster som upphandlas kan utökas med fler organisationer som kunder utan krav på infrastrukturella ingrepp (jämför s.k. SaaS)

Applikationen är utvecklad för att tillgängliggöras nationellt i form av PaaS.

Lokalt erhålls applikationen som binär (jar-fil). Denna kan köras som den är eller paketeras till exempelvis Docker image för installation i lokal Paas-miljö.


3.1.3. IT4: Lös koppling

Förutsättningar att uppfylla

Uppfyllnad

Meddelandeutbyte baseras på att kommunikation etableras utgående från vem som äger informationen som ska konsumeras eller berikas, inte vilket system, plattform, datalager eller tekniskt gränssnitt som informationsägaren för stunden använder för att hantera informationen. Genom centralt administrerad förmedlingstjänst skapas lös koppling mellan informationskonsument och informationsägarens tekniska lösning.

Lös koppling tillämpas alltid.

Där möjligt används:

  • Nationella tjänsteplattformen
  • Nationella tjänstekontrakt

En arkitektur som skapar lös koppling mellan konsumenter och producenter, avseende adressering och standarder för kommunikation.

Följer vedertagna standards. Se kapitel: "Standarder"

En nationell integrationspunkt ska kunna erbjudas för varje nationellt standardiserat tjänstekontrakt, som en fasad mot bakomliggande brokiga systemlandskap.

N/A

Inga tjänstekontrakt tillhandahålls av tjänsten.

Nationella tjänstekontrakt förvaltas i en nationellt koordinerad förvaltning.

N/A

Inga tjänstekontrakt tillhandahålls av tjänsten.

För en process inom vård och omsorg kan flera tjänstekontrakt ingå. Därför är det viktigt att alla tjänstekontrakt baseras på en gemensam referensmodell för informationsstruktur.

Inga tjänstekontrakt tillhandahålls av tjänsten.

SAML, Oauth2 samt OIDC standard följs.

Parter som samverkar i enlighet med arkitekturen integrerar med system hos parter som lyder under annan styrning (t.ex. myndigheter, kunder och leverantörer). Det kan leda till att vård- och omsorgsgivare antingen:

  • Nationellt bryggar informationen (semantisk översättning) eller
  • Nationellt införlivar externt förvaltat tjänstekontrakt som standard.

Observera att semantisk bryggning av information till vårdens referensmodell förutsätter en nationell förvaltning av bryggningstjänster.

För att införliva ett externt förvaltat tjänstekontrakt förutsätts en transparent, robust och uthållig tjänstekontraktsförvaltning hos den externa parten.

N/A

Inga tjänstekontrakt tillhandahålls av tjänsten.

Befintliga system behöver anpassas till nationella tjänstekontrakt. Detta kan göras av leverantörer direkt i produkten, eller genom fristående integrationskomponenter (”anslutningar”). En anslutning bör ligga nära (logiskt vara en del av) det system som ansluts, oavsett om det är i rollen som konsument eller producent för anslutningen som genomförs.

N/A

Inga tjänstekontrakt tillhandahålls av tjänsten.

Interoperabla standarder för meddelandeutbyte tillämpas, så att integration med till exempel en Web Service kan utföras utan att anropande system behöver tillföras en för tjänsteproducenten specialskriven integrationsmodul (s.k. agent).

Internationella standarder används. Se kapitel: "Standarder"


3.1.4. IT5: Lokalt driven e-tjänsteförsörjning

Förutsättningar att uppfylla

Uppfyllnad

När utveckling av källkod är en del av en tjänsteleverans skall följande beaktas:

  • Alla leveranser tillgängliggörs under öppen källkodslicens. Valet av licensformer samordnas nationellt genom rekommendationer.
  • Utvecklingen bedrivs från start i en allmänt tillgänglig (över öppna nätverk) projektinfrastruktur där förvaltningsorganisation kan förändras över tiden inom ramen för en kontinuerligt tillgänglig projektinfrastruktur (analogi: ”Projektplatsen för e-tjänsteutveckling”).
  • Det innebär full insyn och åtkomst för utvecklare till källkod, versionshantering, ärendehantering, stödforum och andra element i en projektinfrastruktur under projektets och förvaltningens hela livscykel.  
  • Upphandlade e-tjänster fungerar på de vanligaste plattformarna hos vårdgivarna och hos nationella driftspartners (Windows, Linux, Unix) t.ex. genom att vara byggda för att exekvera på en s.k. Java virtuell maskin.
  • Gemensam referensmodell för e-tjänsters interna uppbyggnad stimulerar och förenklar återanvändning och överföring av förvaltningsansvar mellan organisationer.

All dokumentation och källkod tillhörande applikationen återfinns i leverantörens Atlassian Suite. Förvaltnings organisationen har full tillgång till dessa system, och externa parter bereds tillgång vid efterfrågan. Samtliga leverabler kan flyttas över till förvaltningsorganisation då egen infrastruktur är framtagen.

Applikationen är utvecklad i Java och tillhandahålls lokalt i form av en jar binär. Denna kan paketeras till en Docker Image för lokal installation, eller körs direkt som den är. Docker kan exekvera på både Linux och Windows, eller i dedikerad PaaS (ex. OpenShift, Kubernetes osv).

Minsta möjliga – men tillräcklig – mängd standarder och stödjande gemensamma grundbultar för nationella e-tjänstekanaler säkerställer att även utvecklingsenheter i mindre organisationer kan bidra med e-tjänster för en integrerad användarupplevelse och att en gemensam back-office för anslutning av huvudmän till e-tjänster finns etablerad. I den mån etablerade standarder med bred tillämpning i kommersiella e-tjänster finns (t.ex. för single-sign-on), bör de användas i syfte att möjliggöra upphandling av hyllprodukter.

Se kapitel: "Standarder" samt "Teknik och Ramverk"

Utveckling sker mot globalt dominerande portabilitetsstandarder i de fall mellanvara (applikationsservrar) tillämpas. Det är möjliggöraren för nyttjande av free-ware och lågkostnadsverktyg i organisationer som inte orkar bära tunga licenskostnader för komplexa utvecklingsverktyg och driftsplattformar.

Se kapitel: "Standarder" samt "Teknik och Ramverk"

För lokala installationer nyttjas Docker.

Nationell (eller regional – beroende på sammanhang vård/omsorg) förvaltning är etablerad (t.ex. s.k. Portal Governance), med effektiva processer för att införliva lokalt utvecklade e-tjänster i nationella e-tjänstekanaler. Systematisk och effektiv allokering av resurser för drift är en viktig grundförutsättning.

Applikationen förvaltas av Inera/CGI. Driften hanteras av Basefarm.

Genom lokal governance och tillämpning av det nationella regelverket får lokala projekt den stöttning som behövs för att från början bygga in förutsättningar för integration i samordnade (t.ex. nationella) e-tjänstekanaler.

Följande regelverk tillämpas:

  • Nationell referensarkitektur tillämpas
  • RIV-TA
  • Referensarkitektur för identitet och åtkomst 


3.1.5. IT6: Samverkan i federation

Förutsättningar

Uppfyllnad

Att gemensamma gränssnitt i alla federativa utbyten finns framtagna och beskrivna, vilket möjliggör kostnadseffektiva och leverantörsneutrala lösningar.

Identitetshantering utgår från SAMBI profil.

Det behövs organ och processer för att godkänna utgivare av elektroniska identitetsintyg och certifikat som är giltiga i federationen.

Användare registreras i regionala kataloger (tillgängliggörs via HSA)

SITHS används.

Aktörer i olika nät, inklusive öppna nät ska vara välkomna i elektronisk samverkan genom att samverkande komponenter är säkra.

Infrastrukturen är ansluten till internet och sjunet.

Att Ingående parter i federationen är överens om ett antal gemensamma ståndpunkter:

  • att stark autentisering likställs med 2-faktors autentisering
  • att vid samverkan acceptera följande metoder för stark autentisering; eID, PKI med lagring av nyckelpar på SmartCard eller motsvarande och metoder baserade på engångslösenord, antingen genererade i en fysisk enhet eller säkert distribuerad till fysisk enhet
  • att tillämpa en gemensam certifikat- och utfärdarpolicy, likvärdig med SITHS, som ett minimikrav för egen eller annans PKI
  • att sträva mot en autentiseringslösning, framför flera olika, för att realisera stark autentisering i den egna organisationen och i federation
  • att enbart acceptera SAMLv2, eller senare version, vid identitetsfederering samt tydliggöra att det i förekommande fall är det enda sättet att logga in och säkerställa det inte finns någon bakväg in
  • att tillämpa ett gemensamt ramverk för att ingå i en federation
  • att tillämpa en gemensam katalogpolicy, med utgångspunkt från HSA policy, som ett minimikrav för egna kataloger
  • att sträva mot att all gränsöverskridande kommunikation skall vara möjlig både över Sjunet och Internet. Det är den egna organisationen som beslutar vilken tillgänglighet som är tillräcklig för anslutningen
  • att sträva efter att möjliggöra kontroll av trafik till och från den egna infrastrukturen i en eller få kontrollpunkter
  • Att utgå från att kommunikation över Internet och Sjunet har ett likvärdigt skyddsbehov

Applikationen är en IdP / OP.

Se kapitel: "Standarder"

4. Användningsfall

Här beskrivs systemet ur ett funktionellt perspektiv i form av en användningsfallsmodell i syfte att lyfta fram de funktionella krav som är drivande för arkitekturen.

4.1. Användningsfall - Översikt

Ref

Dokument id

Dokument

AF1


Administrera tjänsten

AF2


Autentisera aktör

AF3
Logga ut aktör
AF4
Revokera tokens
AF5
Biljettväxling

draw.io

Diagram attachment access error: cannot display diagram

Schematisk användningsfallsöversikt.

4.2. Aktörsinformation

AktörBeskrivning

Personal

Användaren som använder en e-tjänst.
E-tjänstE-tjänsten använder Autentiseringstjänsten för att autentisera och auktorisera personal.
Katalogtjänst (HSA)Informationskälla för personliga och behörighetsegenskaper (behörighetsroller).
SystemförvaltarePerson som administrerar Autentiseringstjänsten. Aktiverar e-tjänster som skall använda Autentiseringstjänsten.

4.3. Logisk realisering av signifikanta användningsfall

4.3.1. AF1 - Administrera tjänsten

4.3.1.1. Textuell beskrivning

Autentiseringstjänsten tillhandahåller ett GUI för administration. Dessa beskrivs utförligt i Användahandboken. Nedan sammanfattas de administrativa möjligheter som tillhandahålls i detta GUI.

  • Administrera behöriga SAML-klienter
  • Administrera behöriga OIDC-klienter
  • Administrera pålitliga Certifikatsutfärdare
  • Administrera tjänstens Certifikat / Privata Nycklar
  • Administrera behörigheter för administratörer av GUI
  • Konfigurera kontaktuppgifter för tjänsten

4.3.1.2. Realisering

En aktör med behörighet vill administrera Autentiseringstjänsten.

  1. Aktören loggar in i tjänsten, och en förutsättning är att aktören har behörighet genom sina attribut i HSA-katalogen.
  2. Aktören är inloggad och utför den tilltänkta administrationen.
  3. Aktören loggar ut ur tjänsten.

4.3.2. AF2 - Autentisera aktör

4.3.2.1. Textuell beskrivning

Användningsfallet beskriver hur en användare autentiseras i flödet.

Se Inledning för beskrivning av detta användningsfall.

4.3.2.2. Realisering

4.3.2.2.1. SAML

Flödet visar en Autentisering med SAML. Flödet är inte uttömmande utan visar enbart ett av många alternativ som kan ske under en autentisering. Exempelvis att aktören i detta fall måste ange medarbetaruppdrag i enlighet med begäran från SP, samt att aktören har mer än ett uppdrag att välja.

Likaså är flödet förenklat och visar exempelvis inte revokeringskontroll av certifikat.

Client side Idp Personal Personal Browser Browser NetID Enterprise NetID Enterprise E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 1 - Backend(Client, Relaying Party, SP) IdP(SAML, OIDC, Oauth2) IdP(SAML, OIDC, Oauth2) Secure IdP Secure IdP HSA(Katalog) HSA(Katalog) SP URL Begär data Oinloggad aktörRedirect med AuthnRequest AuthnRequest alt["IdP-session saknas"] Redirect till säkerthetskanal (mutual TLS) Anslut till Secure IdP Krav på autentisering Starta app Begär PIN Anger PIN PIN Godkänd Skickar autentiseringsuppgifter Autentiserad, redirect till idP Hämta medarbetaruppdrag Svar med medarbetaruppdrag Begär val av medarbetaruppdrag Val av uppdrag Meddela uppdragsval Skapa IdP-session SAML response med Assertion SAML response med AssertionAutomatisk POST Skapar aktörs-session Aktör inloggadVisa begärt data
4.3.2.2.2. OIDC

Flödet visar en Autentisering med OIDC. Kommentarer för SAML-flödet är applicerbart även i detta flöde.

Client side Idp Personal Personal Browser Browser NetID Enterprise NetID Enterprise E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 1 - Backend(Client, Relaying Party, SP) IdP(SAML, OIDC, Oauth2) IdP(SAML, OIDC, Oauth2) Secure IdP Secure IdP HSA(Katalog) HSA(Katalog) SP URL Begär data Oinloggad aktörRedirect med AuthnRequest AuthnRequest alt["IdP-session saknas"] Redirect till säkerthetskanal (mutual TLS) Anslut till Secure IdP Krav på autentisering Starta app Begär PIN Anger PIN PIN Godkänd Skickar autentiseringsuppgifter Autentiserad, redirect till idP Hämta medarbetaruppdrag Svar med medarbetaruppdrag Begär val av medarbetaruppdrag Val av uppdrag Meddela uppdragsval SkapaIdP-session, AccessToken,IDToken, RefreshToken Redirect med code för Token Code för Token Byt code mot tokens Returnera tokens Skapar aktörs-session Aktör inloggadVisa begärt data


4.3.3. AF3 - Logga ut aktör

4.3.3.1. Textuell beskrivning

Användningsfallet beskriver hur en utloggning går till inom tjänsten. Användningsfallet består av 2 alternativ.

  1. SAML
    1. En inloggad SP skickar ett LogoutRequest (via användarens user-agent) till IdP'n. Detta LogoutRequest måste vara signerat.
    2. Vid ett giltigt request avslutar IdP'n den eventuella IdP-sessionen. Ingen propagering till andra SP/RP i samma IdP session sker.
    3. SSO för tidigare IdP-session är nu avslutad och ny AuthnRequest kommer resulterar i ny inloggning, och ny IdP-session.
    4. LogoutResponse returneras till SP i enlighet med efterfrågad binding.
    5. SP ansvarar för att avsluta den egna sessionen med användaren.
  2. OIDC Logout
    1. En inloggad RP gör en Logout begäran (via användarens user-agent) till IdP'n. I detta anrop skickas idtoken med. Detta anrop görs efter det att aktören loggat ut från RP i enlighet med standard.
    2. Vid en giltig begäran avslutar IdP'n den eventuella IdP-sessionen, samt revokerar id-token, access-token, samt refresh-token som hör till det token som skickades in. Tokens utfärdade till andra RP revokeras ej. Ingen propagering till andra RP/SP i samma IdP session sker.
    3. SSO för tidigare IdP-session är nu avslutad
    4. Eventuellt redirectas användaren till en av RP angiven URL, URL:en måste finnas registrerad på servern för att redirekten ska tillåtas.

Dessa två flöden kan sammanfattas med följande:

  • Vid en logoutbegäran inom antingen SAML eller OIDC så kommer IdP'n att avsluta IdP-sessionen och förhindra fortsatt SSO. Tokens utfärdade till andra RP fortsätter vara giltiga.

4.3.3.2. Realisering

Flöden nedan representerar de olika scenarion för utloggning som anges ovan.

Personal(Browser) Personal(Browser) E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 2 - Backend(Client, Relaying Party, SP) E-tjänst 2 - Backend(Client, Relaying Party, SP) IdP(SAML, OIDC, Oauth2) IdP(SAML, OIDC, Oauth2) I dessa flöde har sedan tidigaretvå inloggningar skett och SSO har erhållits.E-tjänst 2 visar att ingen propagering av logout sker. alt[SAML] LogoutRequest LogoutRequest Redirect URL LogoutRequest End IdP Session LogoutResponse POST or Redirect LogoutResponse End user session Logged out page alt[OIDC] LogoutRequest End user session LogoutRequest Redirect URL LogoutRequest End IdP Session Revoke token in request Redirect to specified URL

4.3.4. AF4 - Revokera tokens

4.3.4.1. Textuell beskrivning

Användningsfallet beskriver hur en revokering av token går till inom tjänsten..

  1. Token revokering
    1. En RP som har tillgång till en Access Token eller Refresh Token vill revokera denna. En revokeringsbegäran för denna token skickas till IdP'n.
    2. Vid giltig begäran revokerar idP'n det token som ingick i begäran samt eventuella tillhörande tokens (ID Token, Access Token, Refresh Token som utfärdades samtidigt).
    3. Ingen inverkan på den IdP-session som token utfärdades inom sker. Om IdP-sessionen fortfarande är giltig kan SSO fortsatt erhållas.
    4. IdP skickar svar på begäran med statuskod.

Detta flöde kan sammanfattas med följande:

  • Vid revokeringsbegäran kommer enbart den/de tokens som hör till begäran att revokeras. Ingen inverkan på användaren IdP-session kommer att ske, och vid giltig IdP-session fortsätter användaren erhålla SSO.

4.3.4.2. Realisering

Flöden nedan representerar de olika scenarion för revokering som anges ovan.

Personal(Browser) Personal(Browser) E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 2 - Backend(Client, Relaying Party, SP) E-tjänst 2 - Backend(Client, Relaying Party, SP) IdP(SAML, OIDC, Oauth2) IdP(SAML, OIDC, Oauth2) Revoke token Revoke token Token revoked response

4.3.5. AF5 - Biljettväxling

4.3.5.1. Textuell beskrivning

Biljettväxling beskrivs i RFC7522 och innebär att en E-tjänst med tillgång till en giltig SAML Assertion, kan använda denna för ett erhålla en AccessToken med motsvarande innehåll.

  1. En e-tjänst har erhållit en giltig SAML Assertion, men behöver ett åtkomstintyg i form av en access-token för anrop till ett skyddat API.
  2. e-tjänsten använder denna Assertion i ett anrop mot autentiseringstjänstens biljettväxlings endpoint.
  3. Autentiseringstjänsten säkerställer att biljettväxling får ske.
  4. Autentiseringstjänsten tillhandahåller en access, samt refresh-token tillbaka till e-tjänsten
  5. e-tjänsten använder access-token gentemot det skyddade API't.
    1. Tjänsten med API't kan eventuellt vilja kontrollera den använda access-token gentemot autentiseringstjänsten.
    2. API-tjänsten returnerar ett svar

4.3.5.2. Realisering

Flödet nedan representerar en biljettväxling för en e-tjänst.

E-tjänst 1 - Backend(Client, Relaying Party, SP) E-tjänst 1 - Backend(Client, Relaying Party, SP) API(Resource Server) API(Resource Server) IdP(SAML, OIDC, Oauth2) IdP(SAML, OIDC, Oauth2) SAML Assertionhar erhållits tidigare Biljettväxling med giltig Assertion Kontrollerar att biljettväxling får ske Returnera Access- samt Refresh-tokens anropa API med Access-token alt[vid behov] Kontrollera Access-token Status på Access-token Returnera svar på API anrop

5. Icke-funktionella krav

5.1. Icke-funktionella krav från verksamheten

5.1.1. Svarstider

Ur ett användarperspektiv ingår inte bara Autentiseringstjänstens svarstider i den upplevda svarstiden, utan även den tid det tar att inhämta svar från Nias, HSA samt OCSP/CRL.

5.1.2. Tillgänglighet

Tjänsten är tillgänglig 24/7 på både Sjunet och Internet med en eftersträvad uptime på 99.xxx%.

5.2. Icke-funktionella krav från Systemägaren/Förvaltaren

5.2.1. Test

Tester sker löpande av förvaltningen under utvecklingsfasen. Acceptanstester sker av Inera/NMT, och eventuellt även med tillfrågade kunder.

Exempel på tester som genomförs utifrån behov:

  • Förvaltning (CGI)
    • System / Integrationstester
    • Seleniumtester (GUI samt flöden)
    • Prestandatester
    • Regressionstester
  • Drift (Basefarm)
    • Failover tester
    • Backup / restore tester
    • Deployment tester
  • Kund / tredje part (NMT m.m.)
    • PEN-tester
    • Acceptenstester av kund / tredje part

5.2.2. Konfigurationsstyrning

Hanteras av förvaltningen tillsammans med Basefarm.

5.2.3. SLA-övervakning

Inera Kundservice mäter SLA på inkomna incidenter.

Basefarm mäter tjänstens uptime.

5.2.4. Visning av driftsstatus

Hanteras och presenteras av Basefarm.

6. Teknisk lösning

Autentiseringstjänsten är framtagen för att tillhandahålla en implementation av "Referensarkitektur för identitet & åtkomst", samt ge stöd för framtida krav och implementationer till densamma. Tjänsten bygger på standardprorokollen SAML2.0, OIDC samt OAuth2 och levereras komplett med funktioner för protokollen samt ett administrativt gränsnitt (GUI).

Tjänsten är byggd med Java SE8 och med Spring Boot / Spring Framework.

De ingående delarna i tjänsten kan summeras enligt följande:

  • SAML funktionalitet
  • OIDC/Oauth2 funktionalitet
  • Identifiering av användare via mutual TLS
  • Egenskaper via HSA-katalogen
  • Autentiseringsgränssnitt
  • Administrationsgränssnitt

6.1. Beskrivning av arkitekturellt signifikanta delar av lösningen

6.1.1. Standarder

Tjänstens primära funktion är att tillhandahålla en standardiserad lösning för autentisering och auktorisering i enlighet med internationella standarder. För att åstadkomma detta används följande standarder:


6.1.2. Tekniker och Ramverk

Applikationen är byggd på Java 8 och använder Maven för paketering. Utöver Java 8 SDK används flera tredjeparts bibliotek och ramverk. Dessa är väl etablerade inom branschen och de mest signifikanta beskrivs nedan.

NamnBeskrivning
Java SE8Ett av världens främsta programmeringsspråk.
Spring Framework

Ett Java ramverk för utveckling av applikationer.

"The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications - on any kind of deployment platform. A key element of Spring is infrastructural support at the application level: Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic, without unnecessary ties to specific deployment environments."

Spring Boot

En konventionslösning för Spring Framework. Bygger på de mest vedertagna sätten att använda Spring.

Spring Boot makes it easy to create stand-alone, production-grade Spring based Applications that you can "just run". We take an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need very little Spring configuration.

Vid paketiring skapas en s.k. "fat jar" som är en komplett applikation inklusiver web-server och beroenden till java libraries. Denna jar kan köras direkt med JVM, och lämpar sig för paketering med Docker.

Lombok

Lombok (Project Lombok) är ett java bibliotek som används inom utveckling och paketering för att generera mycket av den kod som vanligtvis betecknas som "Boilerplate". Exempel på detta är databärare som POJO's. Utvecklare använder sig av annotationer för att ge en klass egenskaper såsom exempelvis "getters" och "setters".

Kod genereras vid kompilering och för att ge stöd i utvecklarmiljön installeras ett tillägg. Finns för de flesta utvecklarmiljöer, t ex Eclipse eller IntelliJ.

OpenSAMLEtt Java bibliotek för att hantera SAML specifika uppgifter. Underhålls av Shibboleth och är en del av deras egna tjänster.

Nimbus SDK &

Nimbus JOSE + JWT

Ett Java bibliotek för att hantera OpendID Connect och Oauth2 specifika uppgifter. Tilläggspaketet tillför PKI hantering. Underhålls av Connect2Id och är en del av deras egna tjänster.
AngularEtt av de största frontend ramverken för att utveckla Single Page Applications (SPA).

6.1.3. Kodstruktur

6.1.3.1. Autentiseringstjänsten

Den kod som är specifik för Autentiseringstjänsten är indelad i Maven moduler enligt följande.

NamnBeskrivning
auth-applicationSjälva Spring Boot applikationen. Innehåller Main metod som resources. Det är detta projekt som resulterar i den "fat-jar" som är själva applikationen.
auth-coreAll gemensam backend-funktionalitet. Sköter integration gentemot andra tjänster och håller allt sessionsdata.

auth-gui

Frontend applikation i form av Angular SPA.
auth-oidcHanterar OIDC flödet och all OIDC specifik kod.

auth-releng

Release engineering projekt. Agerar som parent projekt för övriga moduler. Det är via detta projekt som tjänsten byggs.
auth-samlHanterar SAML flödet och all SAML specifik kod.

6.1.3.2. Inera Common bibliotek

Då många av de funktioner som ingår i Autentiseringstjänsten är gemensamma för flera av de tjänster som ingår i förvaltningsobjektet, skapas common bibliotek som tillhandahåller Maven moduler som kan nyttjas av tjänsterna. Dessa byggs som egna moduler och inkluderas som beroenden i applikationen. För common-gui används NPM för distribution. NPM är den vanligaste pakethanteraren för frontend kod.

NamnBeskrivning

common-pkix

PKI-manager för trust och key-manager. Tillhandahåller funktioner för key- samt trust-stores. Modulen tillhandahåller möjlighet att skapa keystore grupper med 1.* nyckelpar, varav 1 sätts som aktivt. Detta är en viktig funktion för Autentiseringstjänsten då byte av certifikat måste kunna ske över en övergångsperiod. Modulen tillhandahåller även truststore som håller de utfärdarcertifikat som tjänsterna skall lista på. Antingen för klientcertifikat, eller för server2server certifikat.

Modulen stödjer även uppsättandet av fler Tomcat connectorer för t ex mutual TLS.

Modulen tillhandahåller ett REST-api för att administrera sina funktioner, och ett användargränssnitt har tagits fram som en del av applikationen för att sköta detta grafiskt. De tjänster som vill nyttja denna modul skall själva implementera detta användargränssnitt då det behöver stämma överens med den grafiska profilen.

common-cache

Modulen tillför funktionalitet för distribuerad cache hantering. Cachen består av ett API som nyttjar Redis för cachehantering. Förutom stöd av distribuerad cache ingår också funktion för pub/sub pattern som kan användas för att notifiera alla noder om events och actions som de behöver ta. Exempelvis invalidera en lokal (ej distribuerad) cache.

inera-hsa-service

Modul som hanterar integration med HSA RIV-TA tjänster via Mutual-TLS. Modulen kräver tillgång till den PKI hantering som tillhandahålls av common-pkix för hantering av klientcertifikat och trusthantering av HSA-serverns certifikat. Vilka HSA-tjänster som ingår i denna modul varierar med tiden och skapas utifrån behov. Då varje tjänst som nyttjar denna modul använder sitt egna certifikat ligger behörighetstyrning helt hos HSA/NTjP och det föreligger ingen risk för informationsläckage.

person-identity-validator

Modulen hanterar validering av personidentiteter. Den har stöd för personnummer, samordningsnummer samt nationell reservidentitet. Förutom validering i flera formar (format, kontrollsiffra, födelsedatum osv) finns även stöd för framtagande av OID för personid-typen vilket är användbart för de tjänster som kräver IIType för personidentitet. (se RIV-TA Best practices för IIType)

common-job

Modulen hanterar schemalagda job via Quartz. Quartz data lagras i MongoDB.

common-gui

Modulen används för att skapa gemensamma GUI element (Angular) som används inom flera olika tjänster.
common-errorhandlerModul som tillhandahåller ett gemensamt och strukturerat sätt att sköta felhantering för REST-tjänster.
common-securityModul som tillhandahåller säkerhetsinställningar samt integration mot IdP'n i form av OIDC, används för att logga in i admin gränssnittet. Hanterar även attribut baserad behörighet (ABAC) för admin gränsnittet och dess API.
common-security-utilDiverse säkerhetsrelaterade funktioner, såsom java annoteringar för attribut styrning
common-redisModulen tillhandahåller integration med Redis

6.1.3.3. Testning

För att kunna genomföra tester krävs, förutom testerna själva, även mockning av infrastrukturen som Autentiseringstjänster nyttjar. Detta är uppdelat enligt följande.

NamnBeskrivning
auth-spEn testklient för SAML och OIDC inloggningar. Agerar som SP samt RP beroende på vilket flöde som skall testas. Skriven som en Spring-boot applikation med ett Angular GUI. Nyttjar samma ramverk som Autentiseringstjänsten för SAML och OIDC specifika delar.
auth-seleniumTillhandahåller seleniumtester för Autentiseringstjänsten.
auth-test-performanceProjekt som används för att driva prestandatester för Autentiseringstjänsten.
auth-testProjektet innehåller kod för olika typer av automatiserad testning.

6.1.4.
Cookies

Autentiseringstjänsten använder sig av Cookies för hantering av sessioner. Detta är en central del av funktionaliteten i applikationen.

Det finns regler gällande "disclaimer" då en applikation nyttjar cookies, men för denna applikation har reglerna tolkats som att detta inte behövs. Detta beslut baseras på EU-direktiv http://ec.europa.eu/ipg/basics/legal/cookies/index_en.htm. Eftersom vi inte har cookies från tredje part, och enbart cookies nödvändiga för tjänsten så behövs ingen "disclaimer".

EU legislation on cookies

EUROPA websites must follow the Commission's guidelines on privacy and data protection and inform users that cookies are not being used to gather information unnecessarily.

The ePrivacy directive – more specifically Article 5(3) – requires prior informed consent for storage or for access to information stored on a user's terminal equipment. In other words, you must ask users if they agree to most cookies and similar technologies (e.g. web beacons, Flash cookies, etc.) before the site starts to use them.

For consent to be valid, it must be informed, specific, freely given and must constitute a real indication of the individual's wishes.

However, some cookies are exempt from this requirement. Consent is not required if the cookie is:

  • used for the sole purpose of carrying out the transmission of a communication, and
  • strictly necessary in order for the provider of an information society service explicitly required by the user to provide that service.

Cookies clearly exempt from consent according to the EU advisory body on data protection- WP29 include:

  • user‑input cookies (session-id) such as first‑party cookies to keep track of the user's input when filling online forms, shopping carts, etc., for the duration of a session or persistent cookies limited to a few hours in some cases
  • authentication cookies, to identify the user once he has logged in, for the duration of a session
  • user‑centric security cookies, used to detect authentication abuses, for a limited persistent duration
  • multimedia content player cookies, used to store technical data to play back video or audio content, for the duration of a session
  • load‑balancing cookies, for the duration of session
  • user‑interface customisation cookies such as language or font preferences, for the duration of a session (or slightly longer)
  • third‑party social plug‑in content‑sharing cookies, for logged‑in members of a social network.

6.1.5. Deployment

6.1.5.1. Redis

Redis används för flyktigt data. Detta är exempelvis:

  • HTTP-sessioner
  • SSO-sessioner
  • Distribuerad cache
  • Transactions manager
  • Pub/Sub (notifiering till noder)

Denna databas kräver ej backup, och vid eventuell krasch skall systemet själv kunna återhämta sig, om än med inverkan att användare tappar sina sessioner.

Redis kan sättas upp som en singelnod eller som ett sentinelkluster. I driftad miljö hos Basefarm används ett sentinel kluster.

För anslutning mot Redis från Autentiseringstjänsten används 2 olika klienter:

  • Lettuce
    • HTTP-sessioner
  • Redisson
    • Distribuerad Cache (inkluderar SSO-sessioner)
    • Transaction manager
    • Pub/Sub

Anledning till att två olika klienter används är för att de tillgodoser olika behov och har olika styrkor. I framtida releaser eftersträvas att kunna gå över enbart till en av dessa ( eller annan klient), men det kräver att utveckling i klienterna först sker för att undvika specialanpassningar i Autentiseringstjänsten vilket skulle försvåra uppgraderingar.

Se "Programvaror och Versioner" för aktuell information om version.


6.1.5.2. MongoDB

Persistent data som kräver backup. Detta är exempelvis:

  • SAML-klienter
  • OIDC-klienter
  • Autentiseringstjänst inställningar
  • Certifikatsutfärdare
  • Privata nycklar och publika certifikat
  • Verksamhetsstatistik

MongoDB kan sättas upp som en singelnod eller som ett sentinelkluster. I driftad miljö hos Basefarm används ett sentinel kluster.

Se "Programvaror och Versioner" för aktuell information om version.


6.1.5.3. Applikation

Byggs som "fat-jar" och paketeras som Docker image inom OpenShift. Denna baserar på RHEL 7 med OpenJDK 8.

I den "feta jaren" så ingår all funktionalitet för applikationen, som exempelvis webserver m.m.

6.1.5.4. Lastbalansering

Om Autentiseringstjänsten skall köras med mer än en nod krävs någon form av lastbalansering. Detta kan hanteras av eventuell PaaS såsom OpenShift, eller via fristående applikation såsom Apache eller Nginx. TLS-terminering läggs med fördel i lastbalanseraren, och HTTP används vidare till applikationen.

6.1.5.5. OpenShift

Autentiseringstjänsten är framtagen för att i nationell installation deployas i ett OpenShift kluster. Denna möjlighet finns även för lokala installationer där mottagande driftorganisation har kunskapen själva.

6.1.5.6. Övervakning

Applikationen tillhandahåller endpoints för övervakning. Dels tillhandahålls endpoints för kontroll om tjänsten är igång och svarar på anrop, och dels tillhandahålls Prometheus endpoint där hela applikationens metrics görs tillgängliga.

  • Health Endpoint
    • (/actuator/health)
  • Liveliness endpoint
    • (/actuator/health)
  • Prometheus endpoint
    • (/actuator/prometheus)

Dessa endpoints behörighetstyrs via konfiguration genom att sätta vilka IP adresser/serier som tillåts.

6.1.5.7. Prometheus/Grafana

För insamling av metrics används med fördel Prometheus, som konfigureras för att "skrapa" alla noders Prometheus-endpoint.

För visualisering och larmsättning av metrics används med fördel Grafana som ansluter till Prometheus som en datasource.

Denna uppsättningen kan med fördel användas för övervakning av flera tjänster. I de fall en driftorganisation har andra verktyg för insamling av metrics så kan dessa användas. Enda kravet är ett de kan hantera data på Prometheus-format. Autentiseringstjänsten har inget krav på specifik metricsinsamling.

6.1.5.8. Loggning

I drift hos Basefarm tillhandahåller applikationen sina loggar till "standard-out" i dess individuella docker containers (poddar). Konfiguration av loggnivåer och ouput av loggar sker via extern logback konfigurering. Denna kan ändras i runtime. Med fördel används en loggningsstack för att enkelt kunna söka i en aggregerad loggkälla.

I de fall då loggning till fil är att föredra kan detta konfigureras i logback konfigurationen.

6.1.5.9. Logstack

För aggregering, indexering och visualisering av loggar använda med fördel Logstack (ELK/EFK). Denna består av tre verktyg som tillsammans ger en enkel logghantering. En sådan logstack kan med fördel användas för flera tjänster.

I de fall en driftorganisation har egen loggaggregeringsfunktion så kan denna med fördel användas. Autentiseringstjänsten har inget krav på specifik logginsamling.

6.2. Realisering av användargränssnitt

Tjänstens tillhandahåller användargränssnitt i form av webbapplikation. Denna är uppdelad i två delar, varav den första är den publika delen som används vid autentisering av användare, och den andra är ett internt (skyddat) GUI för administration av tjänsten.

GUI är realiserat via Angular. Användargränssnitten skall följa eKlient. Lägsta version av Internet Explorer som stöds är IE 11. I övrigt stöds evergreen browsers.

6.2.1. Angular "X"

Detta ramverk är framtaget och underhålls av bl.a. Google och används för att utveckla tjänstens frontend. Webbapplikationen skrivs med HTML, CSS och TypeScript. Vid paketering transpileras TypeScript till Javascript. Vid paketering (via Maven) av webbapplikation utförs följande:

  • Installera Node.js samt Yarn
    • I de fall de saknas
  • Ladda ner NPM paket
    • Feature modules
  • Angular Lint
    • Stämmer av att koden är semantiskt korrekt och följer det definierade syntaxreglerna.
  • Transpilering
    • Typescript transpileras till Javascript och byggs samman med HTML och CSS.

För ytterligare information om Angular se: https://angular.io/

6.2.2. Autententiseringsgränssnitt

Då en e-tjänst vill autentisera en användare (och SSO inte erhålls) presenteras ett webbgränssnitt för aktören. Dessa gränssnitt är responsiva och fungerar bra både på desktop och mobil-enheter.

Tabellen visar ett urval av de gränssnitt som ingår i autentiseringsflödet.

EnhetVal av uppdrag
Desktop

Mobil


6.2.3. Administrationsgränssnitt

För att administrera tjänsten loggar en aktör in och med rätt behörighet presenteras ett webbgränssnitt. Gränssnittet är anpassat för desktop browsers.

Detta administrationsgränssnitt är i produktion skyddat med OIDC inloggning via Autentiseringstjänsten själv. Vid nyinstallation av tjänsten krävs konfiguration innan OIDC inloggning kan ske, och i dessa fall kan Autentiseringstjänsten startas med användarnamn/lösenord som inloggningsmetod. Detta återställs efter det att nödvändig konfiguration skett.

Tabellen visar ett urval av de gränssnitt som ingår i administrationsgränssnittet.

EnhetHantera SPHantera trusts
Desktop

6.2.3.1. Funktioner

De administrativa funktioner som kan hanteras av tjänsten är:

FunktionBeskrivning
SAML-klienterAnvänds för att administrera SAML Metdata. Detta innebär konfiguration av tillåtna SP och IdP.
OIDC-klienterAnvänds för att administrera OIDC data för anslutna tjänster.
CertifikatsutfärdareFunktioner för att hantera pålitliga certifikatsutfärdare.
NyckelhanteringFunktioner för att hantera de nycklar och certifikat som Autentiseringstjänsten använder internt (exempelvis vid signering) eller för extern kommunikation vid Mutual-TLS.
KonfigurationAdministrera kontakt och organisationsuppgifter för Autentiseringstjänsten.
StatistikSök, presentation och nedladdningsfunktion för statistik kring nyttjande av tjänsten.
BehörighetAdministrera behörigheter för administration av IdP.
RP InformationInformation om hur OIDC klienten ska vara uppsatt för att möjliggöra inloggning med OIDC.
AnvändarinformationInformation om inloggad användare.
AnvändarhandbokLänk till extern användarhandbok.

6.3. Felhantering

Tjänsten tillhandahåller inga externa gränssnitt i enlighet med RIV-TA. Den felhantering som är aktuell faller inom ramarna för de standarder som implementerats. I detta fall SAML samt OIDC. För mer information om felhantering inom dessa hänvisas till:

6.4. Integration med omvärlden

Autentiseringstjänsten är beroende av följande externa system:

TjänstFunktioner
HSA (Inera)
  • infrastructure:directory:authorizationmanagement:GetAdminCredentialsForPersonIncludingProtectedPerson
  • infrastructure:directory:authorizationmanagement:GetCredentialsForPersonIncludingProtectedPerson
  • infrastructure:directory:employee:GetEmployeeIncludingProtectedPerson
SITHS
  • OCSP /CRL


draw.io

Diagram attachment access error: cannot display diagram

Bilden illustrerar Autentiseringstjänstens externa beroenden.

6.5. Utveckling & Kodkvalitet

För att upprätthålla kodkvalitet sker utvecklingen med specifika verktyg där samtliga utvecklare använder samma inställningar och arbetar på ett gemensamt sätt. Nedan är ett utdrag av de verktyg och riktlinjer som ligger till grund för utveckling av Autentiseringstjänsten. Detaljerade instruktioner anses inte vara en del av denna SAD utan hanteras utanför i annan förvaltningsdokumentation.

6.5.1. Integrated Development Environment, IDE

De verktyg som används av utvecklare i sitt arbete med källkoden.

6.5.1.1. Spring Tool Suite (Eclipse)

Spring Tool Suite (STS) är en anpassning av Eclipse som är speciellt ämnad för att utveckla applikationer för Spring Framework i allmänhet och Spring Boot i synnerhet. Förutom att vara en fullfjädrad IDE för javautveckling tillför STS anpassningen stöd som underlättar arbetet gentemot Spring. Tillsammans med denna IDE används ett verktyg som heter Lombok. Detta verktyg hjälper till med den kod som normalt sätt benämns som "boilerplate". Med detta menas kod som inte håller någon funktionalitet utan enbart ses som databärare (POJOs). Lombok gör så att enbart fältvariabler behöver deklareras medans resten av koden, såsom getters och setters genereras i runtime. Då verktyget integreras i STS får utvecklare även stöd i compile-time med tillgång till den del av koden som genereras (synlig i outline och vid code-completion).

För att koden skall formateras på ett enhetligt sätt används inställningar i STS för formatering och s.k. save-actions. Formateringen säkerställer att alla utvecklares kod formateras på samma sätt och med save-actions säkerställs det att operationerna utförs redan vid save, och inte kräver några manuella steg. Den formateringsmall som används är framtagen av CGI och är i skrivandes stund i version 2.0.

6.5.1.2. Visual Studio Code

Visual Studio Code är det verktyg som används för utveckling av frontendkoden (Angular). Till Visual Studio Code används verktyg för att jobba med Angular såsom stöd för Typescript, NPM m.m.

Plugins som används till VS Code är TSLint (Rödmarkerar kod som inte följer lint regler).

6.5.2. Repositories

6.5.2.1. Bitbucket

All källkod hanteras i ett GIT-repository, och då via Bitbucket. Denna Bitbucket instans är en av CGI lokalt installerad serverversion och är inte tillgänglig externt.

6.5.2.2. Nexus

Samtliga artefakter som skapas lagras i ett av CGI lokalt installerat Nexus-repository. Detta är inte åtkomligt externt. Förutom att lagra lokalt skapade Maven och Npm artefakter används även Nexus som en proxy för de artefakter som tillhandahålls via exempelvis publika Maven-repositories.

6.5.3. Kodgranskning

För att upprätthålla hög kodkvalitet och minska (undvika att skapa) teknisk skuld krävs Pull-requests för all kod som checkas in, och innan en sådan kan godkännas, måste en godkänd SonarQube analys ha skett. SonarQube analysen sker via en av CGI lokalt installerad SonarQube instans.

Först då både SonarQube och minst en utvecklare godkänt kodändringarna kan dessa mergas in i pågående release-branch.

6.5.4. Automatiska byggen

Alla byggen sker via Bamboo, och vid lyckat bygge deployas nya artefakter till Nexus-repository.

Bamboo används även lokalt för att deploya nya versioner till lokala testmiljöer i OpenShift. Detta sker genom att använda de artefakter som skapats vid tidigare bygge och använda dessa via build / deployconfigurations i OpenShift. CLI verktyget oc används för att integrera med det lokala OpenShift klustret.


7. Säkerhet

7.1. Säkerhetsklassificering av information

Information som hanteras av tjänsten klassas som personuppgift (namn, HSA-id m.m. som inhämtas från HSA).

7.2. Riskanalys

Riskanalys är genomförd tillsammans med Inera, Basefarm och CGI. Dokument och uppföljning sker kontinuerligt. Nedan bild visar de risker som identifierats September 2018.

Identifierade risker September 2018.

Vid nya versioner av tjänsten görs ny riskanalys vid behov.

7.3. Riskminimering i den tekniska lösningen

  • Använda etablerade ramverk och tekniker
  • Att utforma systemet i linje med T-Bokens referensarkitektur.
  • Att använda nationell infrastruktur och stödtjänster.
  • Att använda nationella tjänstekontrakt.
  • Att applikationen exekverar i en feltolerant driftmiljö
  • Att tester utförs av flera parter


7.4. Principer för utveckling av säker programkod

Se kapitel "Utveckling och Kodkvalitet".

7.5. Intrångsskydd

  • Tjänsten tillhandahålls via Basefarms OpenShift kluster.
  • Skalskydd tillämpas
  • Driftmiljön är uppdelad på lastbalansering (ssl-terminering), web/applikationsserver och databasservrar (Redis samt MongoDB).
  • Tillgång till miljön är strikt reglerad. Endast driftpersonal har tillgång plattformens miljöer.
  • Driftoperatör arbetar enligt ISO27001.
  • Extern trafik krypteras.

7.6. Insynsskydd (kryptering)

All extern kommunikation sker via ”Transport Layer Security” för säkert utbyte mellan konsument och producent.

Följande versioner stödjs:

  • TLS1.2

7.7. Riktighet

  • Information som skickas mellan aktörer som webbklient och applikation Information skyddas under transporten med hjälp av TLS protokollet.
  • SOAP/REST tjänster validerar input vid anrop (schema validering samt logik validering).
  • Tillgång till plattformens information är behörighetsstyrd.

7.8. Autentisering

”stark” vid behov enligt infoklassning, dvs en tvåfaktorslösning krävs.

Detta innebär i praktiken att Autentiseringstjänstens GUI är skyddat av Autentiseringstjänsten själv via OIDC.

7.9. Lagkrav

Lagkrav

Uppfyllnad

Spårbarhet – loggning

Nej – Endast systemloggning sker.

Statistikdata lagras i tjänstens databas vilken kan användas för att se lyckade och misslyckade inloggningar. Aktörsinformation hashas innan den sparas och kan ej utläsas i tjänsten.

Samtycke PUL

Nej – Hanteras av anslutande e-tjänst.

Samtycke PDL

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Spärr

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Vårdrelation

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Yttre sekretessgräns

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Inre sekretessgräns

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Sammanhållen journal

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

Direktåtkomst

Ej tillämpbart (patientuppgifter hanteras ej av tjänsten)

7.10. Spårbarhet (loggning)

Se "Spårbarhet - loggning" under "Lagkrav".

8. Nyttjade tjänstekontrakt

9. Nyttjade plattformsfunktioner

Ref

Dokument id

Dokument

P1

HSA

http://www.inera.se/TJANSTER--PROJEKT/HSA/

P2SITHSSe kapitel "Standarder"

10. Informationshantering

10.1. Domäninformationsmodell

Autentiseringstjänsten har ingen egen domäninformationstabell.

10.2. Informationens ursprung

10.2.1. Information som konsumeras

Information om egenskaper som förmedlas via Autentiseringstjänsten hämtas från nationell eller regional kataloger. HSA infrastrukturen används för detta.

Information om identitet som förmedlas via Autentiseringstjänsten hämtas från certifikat utfärdat av pålitlig certifikatsutfärdare. SITHS används för detta.

10.2.2. Information som skapas

Ingen information skapas utan paketeras enbart utifrån ovan nämnda källor.

11. Driftaspekter

11.1. Lösningsöversikt

Autentiseringstjänsten är etablerad i Basefarms OpenShift kluster. Inera har valt att etablera tjänsten som en s.k. PaaS för maximal teknisk flexibilitet samt minimera infrastrukturkostnader.

draw.io

Diagram attachment access error: cannot display diagram

Bilden illustrerar Autentiseringsflöde lösningsöversikt av driftarkitektur.

11.2. Fysisk miljö

Nationellt hanteras driften av Basefarm. Driftmiljön är baserad på Platform as a Service (PaaS) med OpenShift.

  • Applikationen paketeras som en POD (Docker Image)
  • Lastbalansering och SSL-terminering hanteras av OpenShift
  • Redis hanteras i OpenShift (klustrad)
  • MongoDB hanteras på servrar utanför OpenShift (klustrad)
  • Tjänsten är tillgänglig på både Internet och Sjunet
  • Integration med HSA sker internt inom Basefarms nät
  • Externa tjänster är tillgängliga för Autentiseringstjänsten genom utförda portöppningar

11.3. Programvaror och Versioner

11.3.1. För Autentiseringstjänsten

KomponentMjukvara
KodJava OpenJDK 8
KodSpring Boot 2.1.0
KodAngular 7
KodOpenSAML 3.3.1
KodNimbus SDK 5.64.4
Databas

MongoDB 3.6.3

DatabasRedis 4.0.11
PaaSOpenShift 3.9

11.3.2. För förvaltning / utveckling

KomponentMjukvara
KällkodshanteringBitbucket
IssuesJira
DokumentationConfluence
CI/CD internBamboo
IMSlack

11.4. Detaljerad information

Detaljerad information om driftsmiljön kan läsas i den driftshandbok som förvaltas av tjänstens driftsgrupp (Basefarm).

11.5. Produktionssättning och överlämning till förvaltning

Sker i samråd mellan Inera - Basefarm - CGI.