Autentisering med ID-porten
Autentisering med ID-porten
Altinn tilbyr OIDC/OAuth2-basert autentisering og autorisasjon for eksterne integrasjoner (f.eks. sluttbrukersystemer) via ID-porten for endepunkter som krever person-autentisering.
For å få tilgang til samarbeidsportalen, hvor virksomheten din kan konfigurere klienter som brukes for å aksessere Altinns API-er, ta kontakt med servicedesk@digdir.no.
Altinn definerer en rekke scopes som kan brukes for å begrense tilgangen en gitt klient kan få.
Se liste over scopes for mer informasjon om hvordan du kan provisjonere din klient.
Altinn vil fortsette å støtte legacy autentisering via ID-porten og cookies en tid fremover, men dette mønsteret
anbefales ikke for nye integrasjoner.
ID-porten støtter ulike flyter avhengig av implementasjon og hvordan klienten er konfigurert. Se integrasjonsguiden
for utfyllende informasjon om hvordan du integrerer med ID-porten.
En typisk autorisasjonskode-flyt er som følger:
1. Send sluttbruker til autorisasjonsendepunkt
GET https://oidc-ver2.difi.no/idporten-oidc-provider/authorize?
scope=altinn:instances.meta&
acr_values=Level3&
client_id=min_klient_id&
redirect_uri=https://eksempel.no/response&
response_type=code
Merk at andre felter kan være påkrevd å oppgi avhengig av din implementasjon/klient. Se integrasjonsguiden
for mer informasjon.
2. Motta autorisasjonskode på oppgitt endepunkt
Etter bruker har autentisert seg (hvis ikke allerede innlogget), og har gitt tilgang din klient tilgang til scopet, blir han/hun videresendt til
endepunktet oppgitt i redirect_uri
med en autorisasjonskode, f.eks. https://eksempel.no/response?code=1JzjKYcPh4M....FMT0=
.
Denne autorisasjonskode benyttes for å hente ut access_token fra ID-porten i neste steg.
3. Hent ut access_token
Avhengig av klient type vil prosessen har noen forskjeller (se integrasjonsguiden for mer detaljer),
men i hovedsak handler det om å sende autorisasjonskoden mottatt i forrige trinn til ID-portens token-endepunkt, som da vil utstede et access_token. Responsen her vil se ut
noe ala dette:
{
"access_token": "eyJraWQiOiJjWmswME1rbTVIQzRnN3Z0NmNwUDVGSFp...YIcXH0AaRpxffAx7vJj6xzuIJ4C0DxnPCfRRA",
"token_type": "Bearer",
"expires_in": 3599,
"refresh_token": "qcCtId5...r0igT2nI",
"scope": "altinn:instances.meta"
}
Tokenet mottatt i forrige trinn benyttes mot Altinns API sammen med API-nøkkel, f.eks.:
GET /api/my/messagebox HTTP/1.1
Host: https://tt02.altinn.no
Accept: application/hal+json
ApiKey: min-api-nøkkel
Authorization: Bearer eyJraWQiOiJjWmswME1rbTVIQzRnN3Z0NmNwUDVGSFp...YIcXH0AaRpxffAx7vJj6xzuIJ4C0DxnPCfRRA
som da returnerer data for brukeren tokenet representerer.
Autentisering med Maskinporten
Autentisering med Maskinporten
For API-er som krever autentisering av virksomhet støtter Altinn bruk av access tokens utstedt av Maskinporten.
Se Maskinportens konsument-guide for mer
informasjon om hvordan din organisasjon kan ta dette i bruk. Autentiseringen gir sikkerhetsnivå 3.
Maskinporten-autentisering kan foreløpig ikke benyttes sammen med virksomhetsbrukere.
Altinn definerer en rekke scopes som kan brukes for å begrense tilgangen en gitt klient kan få.
Se liste over scopes for mer informasjon om hvordan du kan provisjonere din klient.
1. Hent token fra Maskinporten
Token hentes fra Maskinporten via et JWT Bearer Grant, som da signeres med eget virksomhetssertifikat.
Eksempel på payload for bearer grant mot testmiljø (TT02) som forventer tokens fra VER2-miljøet av Maskinporten:
{
"aud": "https://ver2.maskinporten.no/",
"resource": "https://tt02.altinn.no/",
"scope": "altinn:serviceowner",
"iss": "806e1e80-e3a7-4a73-980e-f92ba1c2bf86",
"exp": 1592896775,
"iat": 1592896655,
"jti": "bebeb0da-fef3-4b67-a0fc-b08d0b68fddd"
}
Eksempel på payload for bearer grant mot prodmiljø:
{
"aud": "https://maskinporten.no/",
"resource": "https://www.altinn.no/",
"scope": "altinn:serviceowner",
"iss": "806e1e80-e3a7-4a73-980e-f92ba1c2bf86",
"exp": 1592896775,
"iat": 1592896655,
"jti": "bebeb0da-fef3-4b67-a0fc-b08d0b68fddd"
}
Du kan bruke verktøyet MaskinportenTokenGenerator
for å teste generering av bearer grants og for å få ut access tokens fra Maskinporten.
2. Legg ved tokenet i requesten
Tokenet legges i Authorization
-headeren i requesten av type Bearer
. Eksempel:
GET /api/serviceowner/reportees?subject=... HTTP/1.1
ApiKey: din-api-nøkkel-her
Authorization: Bearer eyJraWQiO...
Accept: application/hal+json
Autentisering med Altinn-token
Autentisering med Altinn-token
Altinn støtter token fra forskjellige eksterne ID-providere. For å redusere kompleksitet og øke ytelse har man i Altinn3 gjort det mulig for eksterne å veksle et token utstedt fra ID-porten eller maskinporten, og få tilbake et Altinn3-token. Dette tokenet kan så benyttes videre inn mot Altinn sine API-er. En detaljert dokumentasjonen for hvilke token som kan veksles ligger her
En typisk flyt for å få vekslet inn et allerede utstedt token er som følger:
1. Veksling av ID-porten- eller Maskinporten-token til Altinn-token
Token utstedt fra enten ID-porten eller Maskinporten legges inn som Authorization
-header en Bearer
-prefix. Man gjør så en GET-request mot ønsket miljø og får tilbake et gyldig Altinn3-token dersom det opprinnelige tokenet er gyldig.
Request:
GET /authentication/api/v1/exchange/{token-provider} HTTP/1.1
Authorization: Bearer eyJraWQiO...
Accept: application/hal+json
Response:
eyJhbGciOiJ...
Endepunkt for utveksling at token mot TT-miljø:
https://platform.tt02.altinn.no/authentication/api/v1/exchange/{token-provider}
Endepunkt for utveksling av token mot prod-miljø:
https://platform.altinn.no/authentication/api/v1/exchange/{token-provider}
Gyldige token-providers er:
- id-porten
- maskinporten
- altinnstudio
En utfyllende swagger-dokumentasjonen for dette endepunktet finnes her
2. Legg ved tokenet i Requesten
Det vekslede tokenet legges i Authorization
-headeren i requesten av type Bearer
. Eksempel:
GET /api/serviceowner/reportees?subject=... HTTP/1.1
ApiKey: din-api-nøkkel-her
Authorization: Bearer eyJraWQiO...
Accept: application/hal+json