Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Du kan lese litt mer om de forskjellige mekanismene som brukes for å autentisere personer samt sikkerhetsnivåene de gir på sidene om grunnleggende kunnskap.

Klientbibliotek og mellomvare

Du skal aldri skrive sikkerhetskode selv. HelseID anbefaler at du alltid bruker klientbibliotek og mellomvare som er utviklet av profesjonelle sikkerhetsfolk. 

OpenId Connect tilbyr et sertifiseringsprogram og fører en oversikt over klientbibliotek og mellomvare som både er sertifisert og ikke sertifisert. Du finner oversikten her.

HelseID-kjernekomponent

HelseID bruker et rammeverk som heter IdentityServer4. IdentityServer4 er basert på åpen kildekode som ligger tilgjengelig på GitHub. På sidene deres finner du utfyllende dokumentasjon som beskriver de tekniske detaljene i IdentityServer4, men også en beskrivelse av hvordan du kan implementere autentisering av brukere i din applikasjon.

I tillegg har utviklerne av IdentityServer4 tilgjengeliggjort kodebibliotek med forskjellige praktiske eksempler på implementasjon av IdentityServer4, samt hvordan man implementerer autentisering i forskjellige typer klienter. Kodeeksemplene for klienter finner du her og her (IdentityServer3), under mappene som heter "Clients" (IdentityServer4IdentityServer3).

OpenId Connect

HelseID tilbyr autentisering ved bruk av OpenId Connect protokollen. Protokollen er bygd på topp av rammeverket OAuth 2.0 og utgjør et identitetslag som lar applikasjoner verifisere identiteten til sluttbrukeren. Du vil kjenne igjen mange av begrepene i OpenId Connect når du leser OAuth 2.0 spesifikasjonen.

All autentisering av brukere starter med at din applikasjon retter en forespørsel om autentisering av bruker til HelseID. HelseID overtar deretter prosessen, og returnerer til slutt et spesielt token som kalles et ID token.

ID Token

OpenId Connect spesifikasjonen innførte en ny type token som kalles ID Token. Spesifikasjonen sier at dette tokenet skal være en JWT (Json Web Token). Et JWT token inneholder et sett av claims (påstander) i JSON format, og skal være kryptografisk signert og/eller kryptert.

...

ID Tokenet er et anliggende mellom applikasjonen som ber om autentisering av brukeren (klienten) og HelseID, og skal i utgangspunktet ikke benyttes til andre formål enn å la klienten få tilgang til informasjon om den autentiserte brukeren.

Innholdet i ID Tokens

Det kan være fristende å legge annen informasjon om brukeren inn i et token som er signert av en sentral autoritet, men i dette tilfellet ønsker HelseID å være restriktive. Vi vil unngå å legge sensitiv informasjon i tokens generelt, og mener at applikasjoner og tjenester bør finne andre måter å representere informasjon som ikke direkte er knyttet opp til personers identitet.

Forespørsel om autentisering

En forespørsel om å autentisere en bruker starter alltid ved at din applikasjon gjør en HTTP Request mot en adresse hos HelseID. Denne forespørselen skal være formatert på en spesifikk måte, og skal alltid inneholde følgende informasjon som parametre i forespørselen:

...

Det finnes mange andre parametre som kan være med i en forespørsel om autentisering, men de er ikke påkrevd, og vil variere litt avhengig av hvilken autentiseringsflyt du ønsker å benytte. Du kan se en liste over alle mulige parametre i spesifikasjonen av OpenId Connect.

Autentiseringsflyt (aka grant type)

OpenId Connect definerer et sett av det som kalles grant types, eller autentiseringsflyt. En grant type beskriver forskjellige autentiseringsflyter, og er laget for å støtte ulike scenario basert på applikasjonstyper og teknologiplattformer.

...

Du kan lese mer om dette i spesifikasjonen av OpenId Connect.

Scopes

OAuth 2.0 introduserte konseptet scopes for å angi tilgang til en ressurs i form av et API. OpenId Connect har lånt begrepet fra OAuth 2.0, men bruker det på en litt annen måte. OpenId Connect bruker scopes for å angi en ønsket identitetsressurs. For identitetsressurser i HelseID vil et angitt scope bety at man får ett eller flere claims i ID Tokenet.

...

For å autentisere brukere ved bruk av OpenId Connect MÅ du angi ett spesielt scope som har verdien "openid". Men, HelseID tilbyr også flere scopes som beriker ID Token med mer informasjon om brukeren. Du kan lese mer om hvilke scopes vi tilbyr i HelseID i vår tekniske dokumentasjon.

Applikasjonstyper og autentiseringsflyt

Vi har laget noen beskrivelser av hvordan man autentiserer brukere med HelseID med utgangspunkt i hvilken type applikasjon du lager.

Serverapplikasjoner

Med serverapplikasjoner mener vi web-applikasjoner som kjører på en server. Et eksempel på en slik applikasjon er f.eks en applikasjon utviklet i Microsoft .Net MVC.

Tykke klienter

Med tykke klienter mener vi applikasjoner som installeres og kjøres lokalt på en datamaskin. Eksempler på dette er Microsoft .Net WPF eller Winforms.

Mobile apps

Med mobile apps mener vi program som installeres og kjøres på mobiltelefoner. Eksempler på dette er apps laget i Xamarin eller programmert spesifikt for iOS eller Android.

Javascript-baserte applikasjoner

Med Javascript-baserte applikasjoner mener vi program som lastes ned lokalt og kjører i nettleseren. Eksempler på dette er applikasjoner som er utviklet i ett rammeverk som f.eks Angular, React eller lignende, men også rene javascriptapplikasjoner.