Revokering av bevis
Digdir sin utstedar, Bevisporten, kan no revokere bevis som den har utstedt. Revokering vert nytta når eit bevis ikkje lenger skal vere gyldig — til dømes fordi innbyggjaren ynskjer det, grunnlagsdata har endra seg, brukaren har mista retten til beviset, eller beviset vart utstedt ved ein feil.
Teknisk mekanisme
Revokering er implementert etter IETF-spesifikasjonen Token Status List (TSL), som gjeld for både SD-JWT- og mdoc-baserte bevis.
Kort fortalt:
- Alle bevis frå Bevisporten inneheld eit
status-objekt som peiker på ei statusliste viauri, og gir beviset sin plass i lista viaidx. - Status List Token er ein signert JWT som samlar statusar for mange bevis i éi komprimert bitliste.
- I dagens implementasjon brukar Bevisporten 2 bit per bevis og har to mogelgheiter:
00= gyldig,01= revokert.
Status List Token-en er offentleg tilgjengelig og kan hentast utan autentisering.
Døme på revokerbart bevis:
{
"vct": "no:kontaktregisteret:kontaktinformasjon:1",
"iss": "https://utsteder.test.eidas2sandkasse.net",
...
"status": {
"status_list": {
"idx": 15031,
"uri": "https://status.test.eidas2sandkasse.net/lists/1"
}
},
...
}
Tilgjengelegheit
Revokering er som default aktivert for alle bevistypar i Bevisporten, inkludert både PID samt dynamiske bevistypar som vert laga fortløpande med Bevisgenerator. Det er mogeleg å deaktivere revokasjon per bevistype ved å ta kontakt med Digdir.
Validere revokasjons-status
Brukarstader som treng vite om eit bevis er revokert, må utvide valideringa som er beskrive i OpenID4VP med ein statuskontroll:
- Valider beviset som normalt (signatur, tillitsliste, at utstedar er autorisert for bevistypen, holder-binding).
- Les
status.status_list.uriogstatus.status_list.idxfrå beviset. - Hent Status List Token med eit HTTP GET-kall mot
uri(Accept: application/statuslist+jwt). Dette kallet krev ikkje autentisering. - Valider signaturen på Status List Token-en, og respekter
exp/ttlfor cache av responsen. - Dekomprimer bitlista og les verdien på indeksen
idx. - Om verdien er
01, er beviset revokert og skal avvisast. Om verdien er00, er beviset ikkje revokert (Du må framleis sjekke gyldigheitsperiode, eller andre bevistype-spesifikke valideringar som står i rulebook).
Brukarstader kan med fordel implementere ein sentral, periodisk revokasjonssjekk-funksjon i eiga verksemd, både av personvern-minimerande omsyn, men også for å unngå høg last på den sentrale statuslista.
Trigge revokering som sluttbrukar
Gå til revokasjonssida i Bevisgenerator, velg bevistypen du vil revokere, og skriv inn fødselsnummeret til testbrukaren din.
Trigge revokering som utstedar
Bevisporten sitt API har to endepunkt for å revokere bevis, avhengig av kva utstedingsflyt som vart nytta ved utstedelse. Begge er PUT-kall og krev eit gyldig Maskinporten-token utstedt til organisasjon som eig bevistypen.
| Flyt | Endepunkt | Bruk |
|---|---|---|
| Pre-authorized code flow | PUT /api/v1/credential/revokePUT /{tenant}/api/v1/credential/revoke |
Revokerer eit spesifikt bevis, identifisert med issuance_transaction_id. |
| Authorization code flow | PUT /api/v1/credential/revoke/by-subjectPUT /{tenant}/api/v1/credential/revoke/by-subject |
Revokerer alle bevis utstedt for ein gitt subject.identifier (normalt fødselsnummer) og credential_configuration_id. |
Begge endepunkta finst også i ein tenant-spesifikk variant, /{tenant}/api/v1/credential/revoke..., der {tenant} er tenant-identifikatoren din (t.d. bevisgenerator) — på samme måte som for dei andre credential-endepunkta i API-et.
Full OpenAPI-spesifikasjon finn du i Swagger UI.
Revoke i pre-authorized code flow
Request body (PreAuthCredentialRevokeRequest):
{
"credential_configuration_id": "some.known.credential_mso_mdoc",
"issuance_transaction_id": "xyz123..."
}
credential_configuration_id— identifikatoren for bevistypen, slik den er definert i utstedar-metadata.issuance_transaction_id— ID-en frå utstedingstransaksjonen (samme ID som blei brukt/returnert da beviset blei oppretta viaPOST /{tenant}/api/v1/credential/issuance-transaction).
Svar: 204 No Content ved suksess.
Revoke i authorization code flow
Request body (AuthCodeCredentialRevokeRequest):
{
"credential_configuration_id": "some.known.credential_mso_mdoc",
"subject": {
"identifier": "12345678901"
}
}
credential_configuration_id— identifikatoren for bevistypen.subject.identifier— subjektidentifikatoren (typisk fødsels-/D-nummer eller organisasjonsnummer) som beviset/beviset er utstedt til.
Merk at dette revokerer alle bevis som matchar både credential_configuration_id og subject.identifier — ikkje berre eitt enkelt bevis. Svar: 204 No Content ved suksess.
Avgrensingar i dagens versjon
- Berre binær status (gyldig/revokert) er støtta — ingen mellomtilstand som «suspendert» er p.t. implementert.
- Det er ikkje definert feilkodar eller feil-body for revoke-endepunkta, utover
204 No Contentved suksess. - Revokering gjeld heile beviset/subjektet — det er ikkje mogleg å revokere berre enkelte claims i eit bevis.
Sjå også
- OpenID4VCI — korleis bevis blir utstedt
- OpenID4VP — korleis bevis blir verifisert
- Digdir sin utsteder
- Swagger UI for Bevisporten
- IETF draft: Token Status List (TSL)