PAR (Pushed Authorization Requests) er en mekanisme som gir HelseID-klienter mulighet for å la informasjonen i en brukerpålogging fra klient til HelseID gå direkte fra klienten til HelseID, snarere enn gjennom nettleseren.
Historisk flyt i OAuth 2.0/OpenID connect
Når en klient vil logge på en bruker ved hjelp av HelseID, har flyten Authorization Code blitt brukt. Denne flyten foregår på den måten at klienten dirigerer brukeren til nettleseren for å la brukeren få tilgang til /authorize
-endepunktet (heretter kalt autorisasjons-endepunktet) på HelseID-tjeneren. I kallet til autorisasjons-endepunktet vil klienten sende ved informasjon om hvilket type kall det er snakk om (klientens identitet, hvilken identitetsleverandør som skal benyttes, organisasjonsnumre etc.). Diagrammet under viser denne flyten:
Bruken av denne flyten er problematisk i kontekst av sikkerhet, personvern, og også med tanke på at informasjonsinnholdet kan være for stort for bruk av GET-verbet fra nettleseren mot autorisasjons-endepunktet:
Flyten gir ingen mekanisme for å sikre konfidensialiteten til parametrene i kallet. Selv om TLS brukes for å sikre autorisasjons-endepunktet, vil informasjonen gå gjennom nettleseren, og query-strengen kan lekkes, blant annet i logger.
Flyten (uten bruk av Request Object) gir ingen beskyttelse for kryptografisk integritet og autentisitet for innholdet. En angriper kan for eksempel kunne endre scopes eller endre informasjon om organisasjonsnummer. HelseID har tiltak for denne typen angrep, men det gir økt robusthet å hindre muligheten for at de kan nyttiggjøres av en angriper.
Med alt innholdet i request-URL-en, kan den bli svært stor, slik at et GET-verb ikke kan brukes. Da må nettleseren bruke POST-verbet, og det gjør utviklingen av koden til kallet tungvindt.
Ny flyt (Pushed Authorization Requests / PAR)
PAR gjør det enklere å fjerne problematikken slik som den er beskrevet ovenfor.
HelseID introduserer et nytt endepunkt: PAR-endepunktet
Klienten sender inn informasjonen som trengs for brukerpålogging gjennom dette endepunktet, og ikke gjennom nettleseren
HelseID autentiserer klienten i dette kallet, og lagrer informasjonen lokalt
Klienten får tilbake et såkalt «request_uri»-parameter, som er en engangsstreng for pålogging
Klienten bruker denne strengen i nettleseren, og brukeren kan logge seg på (som før)
Resten av flyten er identisk med den historiske flyten
Sikkerhetsprofilen til HelseID stiller krav til at alle nye klienter må bruke denne mekanismen. Vi anbefaler at alle eksisterende klienter tar i bruk denne mekanismen så raskt som mulig.