Publisert - 17.03.2026

DPoP: Hvorfor vi stiller kravene om ulike endepunkt og ulike scopes

Termer
DPoP-token Et Access-token beskyttet med DPoP.
Bearer-token Et Access-token som ikke er beskyttet av DPoP.
Scope En parameter som brukes i et Access-token.

HelseID stiller krav om at API-er som skal støtte både DPoP-tokens og Bearer-tokens må gjøre dette ved å tilby to ulike endepunkter og to ulike scopes.

Vi forsøker å forklare årsaken til dette kravet her, men dette dokumentet gir en mer utfyllende forklaring.

NB: Nye API-er skal kun støtte DPoP og trenger ikke å oppfylle disse kravene.

Krav om nye endepunkter og nye scopes for API-er som går over fra Bearer-tokens til DPoP-tokens

Dette dokumentet tar for seg kravene HelseID stiller for eksisterende API-er som skal ta i bruk DPoP som sikkerhetsmekanisme. I disse API-ene vil både DPoP-tokens og Bearer-tokens støttes i en overgangsperiode; dette vil medføre høyere kompleksitet i tilgangsstyringen. Det kan også være en risiko for at innføringen av DPoP ikke gir verdi i overgangsfasen dersom API-et ikke følger kravene som HelseID stiller.

HelseID krever at alle API-er som skal støtte både DPoP-tokens og Bearer-tokens må etablere et nytt endepunkt for DPoP. De må også opprette et nytt scope som indikerer at klienten ønsker å bruke DPoP mot API-et.

Kravene har to formål:

  • Å sikre at tilgangsstyringen i API-et blir så enkel som mulig
  • Å sikre at API-et er beskyttet mot såkalte «downgrade-angrep» som beskrevet i RFC 9449.

Krav om to ulike endepunkter

HelseID krever at API-et må tilby ulike endepunkter for tilgang med DPoP-tokens og Bearer-tokens. Dette er en utvidelse av sikkerhetskrav SA1 hvor vi krever at endepunkter i API-et som godtar Access-tokens ikke skal støtte andre sikkerhetsmekanismer.

Dette kravet stilles for å redusere kompleksiteten i tilgangstyringen til API-et. Kravene til HelseID er generelle og basert på beste praksis. Målet er å redusere sannsynligheten for svakheter i økosystemet snarere enn i hvert enkelt API.

Krav om to ulike scopes

Når et eksisterende API skal ta i bruk DPoP så vil API-et i en periode måtte støtte både DPoP-tokens og Bearer-tokens, fram til alle klientene har tatt i bruk DPoP. Vi legger til grunn at API-eieren ønsker å få gevinst av DPoP så snart som mulig, også i overgangsperioden.

Et DPoP-token kan også brukes som et Bearer-token, hensikten med dette er å kunne gradvis innføre DPoP-mekanismen. En klient kan da selv oppgradere til DPoP uten at hvert enkelt API som klienten konsumerer trenger å gjøre endringer for sine klienter.

Dette er en stor fordel, men det medfører en ulempe. Et API kan ikke vite om klienten mener å bruke DPoP-tokenet som et Bearer-token, eller om det er et angrep der noen forsøker å misbruke (nedgradere) et token på avveie.

For å løse dette problemet krever vi at API-ene innfører et nytt scope som indikerer bruk av DPoP. På denne måten kan API-et skille mellom normal oppførsel fra en klient, og et angrep. HelseID stiller ingen krav til navngivingen av de to scopene utover at de er unike.

Figur 1

En angriper stjeler et DPoP-token mot et API som tillater både DPoP-token og Bearer-token i samme endepunkt. Angriperen kan da nedgradere DPoP-tokenet til et Bearer-token og får tilgang til API-et. I dette tilfellet gir ikke DPoP verdi. dpop1.png

Figur 2

En angriper stjeler et DPoP-token mot et API som støtter både DPoP-token og Bearer-token, men med to ulike endepunkter. Angriperen kan da nedgradere DPoP-tokenet til et Bearer-token og får tilgang til API-et gjennon endepunktet som støtter Bearer-tokens. I dette tilfellet gir heller ikke DPoP verdi. dpop2.png

Figur 3

En angriper stjeler et DPoP-token mot et API som tillater både DPoP-token og Bearer-token i samme endepunkt, men her bruker API-et to ulike scopes for å beskrive hensikten med tokenet. Angriperen kan nedgradere DPoP-tokenet til et Bearer-token, men vil ikke få tilgang siden kombinasjonen av Bearer-token og DPoP-scope ikke tillates av API-et. Her vil DPoP gi verdi, men løsningen krever en kompleks tilgangsstyring i API-et så det er høy risiko for feil. dpop3.png

Figur 4

En angriper stjeler et DPoP-token mot et API ssom støtter både DPoP-token og Bearer-token, men i to ulike endepunkter. I tillegg bruker API-et to ulike scopes for å beskrive hensikten med tokenet. Angriperen kan nedgradere DPoP-tokenet til et Bearer-token, men vil ikke få tilgang siden kombinasjonen av Bearer-token og DPoP-scope ikke tillates av API-et. Her vil DPoP gi verdi, og tilgangsstyringen i API-et er så enkel som mulig. dpop4.png

Søk i Utviklerportalen

Søket er fullført!