ID-porten og SAML 2.0

10 apr. 2016
Tags: Sikkerhet

Norge.no har oversikt over Norske offentlige digitale tjenester. Det de fleste av tjenestene har til felles, er at de trenger å bekrefte din identitet. Direktorat for forvaltning og IKT drifter derfor en felles portal kalt ID-porten som tar hånd om innlogging på vegne av alle disse tjenestene. ID-porten er en "single sign on"-løsning, der du (nettleseren din) i praksis blir logget inn hos alle som bruker ID-porten. Hvis du f.eks. logger inn på Skatteetaten for å sjekke selvangivelsen din, kan du gå rett videre til NAV for å sjekke din pensjon, uten å måtte logge inn på nytt.

Elektronisk bekreftelse av identitet har to viktige dimensjoner.

  • Knyttning mellom fysisk person og elektronisk identitet (utstedelse).
  • Mekanisme for identifisering (autentiseringsmekanisme). For eksempel brukernavn/passord, kode på SMS, kode fra kodegenerator, kode fra skrapekort osv. De fleste kodegeneratorene er basert på en form for asymmetrisk kryptografi som enten er tid eller sekvensbasert.

Se forøvrig dette blogginnlegget for en fin forklaring. I Norge er det 4 sikkerhetsnivåer for elektronisk identiet, definert i Rammeverk for autentisering og uavviselighet i elektronisk kommunikasjon med og i offentlig sektor

Forenklet utgave fra versjon 2.0 (2010).
Forenklet utgave fra versjon 2.0 (2010).

Det er opp til den offentlige tjenesten å vurdere krav til sikkerhetsnivå for sine tjenester. Difi's dokumentasjon Integrasjonsguide for ID-porten forklarer hvordan innloggingen (fødereringen) fungerer. Som figurene viser er løsningen svært "klient-tung". Den XML-baserte protokollen SAML 2.0 benyttes for å overføre informasjon mellom tjeneste og ID-porten, via brukerens klient. Se forøvrig denne siden for en fin forklaring på grunnleggende SAML.

Hvordan innlogging fungerer. Det står at det benyttes HTTP POST i dokumentasjonen, men fra hva jeg kan se er det GET som faktisk brukes.
Hvordan innlogging fungerer. Det står at det benyttes HTTP POST i dokumentasjonen, men fra hva jeg kan se er det GET som faktisk brukes.

Difi tilbyr også et "kontakt- og reservasjonsregister" med e-post og telefon, samt status på om bruker har reservert seg fra digital kommunikasjon (At de vil ha alt på papir). Steg 5 i denne figuren viser at denne informasjonen går direkte mellom tjeneste og ID-portalen.

Hvordan utlogging fungerer.
Hvordan utlogging fungerer.

All informasjon knyttet til autentiseringen går via klienten, og kan dermed manipuleres eller fanges opp av en 3.part. For å unngå at slike situasjoner kompromitterer sikkerheten i systemet, signeres AuthnRequest, LogoutRequest og LogoutResponse med partenes private nøkler. Signeringen sørger for integritet. Fra hva jeg kan se, sendes ikke AuthnResponse via klienten. I stedet videreformidler klienten en SAMLart-referanse, som den offentlige tjenesten så bruker for å verifisere innloggingsdetaljer direkte med ID-porten.

Dette er et eksempel, dekodet, fra en utlogging fra Skatteetaten.
Dette er et eksempel, dekodet, fra en utlogging fra Skatteetaten.

All kommunikasjon går naturligvis over sikker HTTP, og som vi vet etableres sikker forbindelse før HTTP-forespørsler med GET/POST data sendes. Krypteringen sørger for konfidensialitet.

Utviklerverktøy i Chrome er et glimrende verktøy for å utforske hva som skjer bak kulissene. Sett på
Utviklerverktøy i Chrome er et glimrende verktøy for å utforske hva som skjer bak kulissene. Sett på "preserve log".