Bruk av hemmeligheter for klienter

Hemmeligheter brukes i HelseID for å gjøre klientautentisering, samt for å generere DPoP-beviser. Du kan bruke samme hemmelighet (privatnøkkel) for begge disse formålene dersom det er hensiktsmessig.

Privatnøkkelen beskyttes godt, men HelseID tillater at den gjenbrukes på tvers av komponenter innenfor samme system. Grensene for «samme system» er opp til systemleverandøren å definere, men følgende føringer gjelder:

  • For en lokalt installert programvare er grensen lokal maskin, eventuelt databasen som brukes
  • For en lokalt installert programvare med en backend som er delt innenfor samme virksomhet er grensen lokal maskin samt den delte backenden og databasen
  • For et distribuert system er grensen typisk det interne nettverket hvor de ulike komponentene kjører (f.eks. internt i et Kubernetes-cluster eller innenfor et lukket virtuelt nettverk)

For å kunne bruke DPoP klienten besitte en privatnøkkel som den bruker både for å opprette DPoP-beviser for kall mot HelseID og deretter DPoP-beviser for kall mot et API. Samme privatnøkkel brukes så lenge Access-tokenet er gyldig. I en distribuert arkitektur kan det være ulike komponenter som gjør klientautentisering og opprettelse av DPoP-bevis. HelseID tillater at samme privatnøkkel brukes på tvers av komponentene i systemet så lenge de bare er tilgjengelige i et lukket nettverk.

Bruksmønstre der leverandøren kan velge håndtering av hemmeligheter:

De tre figurene under viser eksempler på hvor grensen for et system i kontekst av bruk av HelseID går. Innenfor den blå rammen (enten en lokalt tykklient, eller et internt lukket nett) står en programvareleverandør fritt til å velge hvordan de håndterer hemmeligheter.

Lokalt installert programvare

I dette mønsteret er klientprogramvaren installert på en egen datamaskin, som også lagrer informasjon i en lokal database:

Tykklient

Lokalt installert programvare med felles backend

I dette mønsteret er klientprogramvaren installert på flere datamaskiner, som hver for seg bruker en felles backend/tjener for å lagre informasjon i en felles database:

Lokalt installert backend

Distribuert programvare

I dette mønsteret vil en tjeneste være offentlig for flere brukere, uavhengig av hvilke datamaskiner de bruker for å konsumere tjenesten. Tjenesten har koblinger både til offentlig nett og et internt lukket nett:

Sistribuert system

Et bruksmønster der leverandøren ikke kan dele hemmeligheter mellom ulike komponenter:

Figuren under viser et distribuert system som går på tvers av flere nettverk; i dette tilfellet må hemmeligheten sikres og kan ikke deles mellom ulike komponenter i ulike nettverk.

Distribuert system på tvers av flere soner