Table of Contents |
---|
Introduksjon
API’et må benyttes av brukersteder i Helse-og Omsorgsektoren der digitale fullmakter skal kunne benyttes. Fullmaktene registreres alltid i Pertsonvernkomponenten (PVK) i Helsenorge. Brukersteder må altså ha slik API integrasjon for at de elektroniske fullmaktene skal kunne benyttes.
API'et skal dekke følgende USeCases:
Table of Contents |
---|
Introduksjon
API’et må benyttes av brukersteder i Helse-og Omsorgsektoren der digitale fullmakter skal kunne benyttes. Fullmaktene registreres alltid i Pertsonvernkomponenten (PVK) i Helsenorge. Brukersteder må altså ha slik API integrasjon for at de elektroniske fullmaktene skal kunne benyttes.
API'et skal dekke følgende USeCases:
Et brukersted vil sjekke om det finnes en gyldig fullmakt for aktuelt formål.n
Dersom fullmakte eksisterer, skal brukerstedet kunne laste ned et “fullmaktsbevis” som må arkiveres som dokumentasjon for handlingen som ble utført basert på den aktuelle fullmakten.
...
Navn | Type | Lovlige verdier | Kommentar |
---|---|---|---|
fullmaktReferanseId | Guid | Referanse mottatt i tidligere respons | Denne er en unik referanse til et bestemt fullmaktsforhold |
Eks:
{
"fullmaktReferanseId":"76daf7a1-3005-ea11-831a-000d3a29f858"
}
Responsparametre
Dette er et JWT signert av Helsenorge personverntjenester.
Eks:
{
"jwt": "<token>"
}
Format
encodeBase64(json-header) + '.' + encodeBase64(json-payload) + '.' + encodeBase64(signature) |
---|
...
Kort claimnavn | Fullt claimnavn | Beskrivelse |
---|---|---|
alg | Algorithm | Hvilken algoritme som benyttes. Vil være "RS256" dvs. RSA-SHA256 |
kid | Key ID | Thumbprint av public sertifikat tilhørende privat nøkkel som ble benyttet til å generere token |
typ | Type | Type token det er, vil alltid være "JWT" |
x5c | X.509 certificate chain | Public X.509 sertifikat tilhørende den private nøkkelen som ble benyttet for å signerer tokenet (se https://tools.ietf.org/html/rfc7515) |
Eks:
{
"alg": "RS256",
"kid": "046B8AC1B02F94E943A8137CF52EA3F4D7C78429",
"typ": "JWT",
"x5c": [
“MIIE/DCCA+SgAwIBAgILAXj3aSwrszNYDaIwDQYJKoZIhvcNAQELBQAwUTELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBhc3MgQVMtOTgzMTYzMzI3MSMwIQYDVQQDDBpCdXlwYXNzIENsYXNzIDMgVGVzdDQgQ0EgMzAeFw0xODAxMjMwNzQ4MDVaFw0yMTAxMjMyMjU5MDBaMGIxCzAJBgNVBAYTAk5PMSEwHwYDVQQKDBhESVJFS1RPUkFURVQgRk9SIEUtSEVMU0UxHDAaBgNVBAMME1BFUlNPTlZFUk5USkVORVNURVIxEjAQBgNVBAUTCTkxNTkzMzE0OTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALEJZUfJTuVYi5U1mAMgrxvNiLrSiGlC9Fi87bpYnYC5TMndpZL67PtoDrWmtwI/bw7o5jvsbbJAgMuNBkabsBcrsRlPis0DBBUkoKA8QIEnjmhjHUEf3GN8nsDgTFBPupSGG2pUB+xTJ55Se5LSG5joWSy3fkMG4Rn9cTnRn2uYMsJ3W3h+G9799PuiBiLH65rTd99HlZfblKrd38270dYHOgjcvV0xjJ5BazUDLnlksDE6HUY1+ZnAR9ikmfsXKKMiMAwpMoTz8+D9jYU7QlNvEPGKYVm2NWPVZ1i6Ctj8/NSfyxsFPGDK7ZsmzpJOKi2Uj70ktbG+ZWyaOXw955sCAwEAAaOCAcIwggG+MAkGA1UdEwQCMAAwHwYDVR0jBBgwFoAUP671eAuSo3AgNV9a+vckoFIB8EEwHQYDVR0OBBYEFL272d5vrNjsC2c9QHcu9fF8fJ9JMA4GA1UdDwEB/wQEAwIGQDAWBgNVHSAEDzANMAsGCWCEQgEaAQADAjCBuwYDVR0fBIGzMIGwMDegNaAzhjFodHRwOi8vY3JsLnRlc3Q0LmJ1eXBhc3Mubm8vY3JsL0JQQ2xhc3MzVDRDQTMuY3JsMHWgc6Bxhm9sZGFwOi8vbGRhcC50ZXN0NC5idXlwYXNzLm5vL2RjPUJ1eXBhc3MsZGM9Tk8sQ049QnV5cGFzcyUyMENsYXNzJTIwMyUyMFRlc3Q0JTIwQ0ElMjAzP2NlcnRpZmljYXRlUmV2b2NhdGlvbkxpc3QwgYoGCCsGAQUFBwEBBH4wfDA7BggrBgEFBQcwAYYvaHR0cDovL29jc3AudGVzdDQuYnV5cGFzcy5uby9vY3NwL0JQQ2xhc3MzVDRDQTMwPQYIKwYBBQUHMAKGMWh0dHA6Ly9jcnQudGVzdDQuYnV5cGFzcy5uby9jcnQvQlBDbGFzczNUNENBMy5jZXIwDQYJKoZIhvcNAQELBQADggEBAGyiyoGeOq4gW87SR+Om9XPIXy2IeHvzIx2NDLO5l5fciz75F0Unio7AN/NJF3B7iTB6WrKfuf1FClYVZRWaKHR0PFON97OU0Dq35M7B/k3F+Z3/oNPaLoNGRLORybZ0lDu3qval7/LoTH685KnQCyiyQO7nOWQOiEtoRz7A3NwFvXPSiNNJfVKjtoMROtkEnYjeL2D/I6r5WJ8iHs4wVFx99PqqEJfBju6kG0FgcOQyGN/2GI7Bzugx7RZzgqfJPg3aGJWhbZ2f2hbUOU4vJjbOdjyv0fZkxiTfk2gCfHWleuVnDSS7WMSO/oNA5PufoufWQ5hs3G5ytnSILRdwIp0="
]
}
Payload
Kort claimnavn | Fullt navn for claim | Beskrivelse |
---|---|---|
jti | JWT-ID | En unik iditifier (GUID) for dette fullmaktsbeviset. (Det kan utstedes mange fullmaktsbevis basert på samme fullmakt (som også har sin unike identifikator) |
aud | Audience | Hvor fullmaktsforholdet har gyldighet. Samme innhold som fullmaktens virkeområde: “helsenorge” - Fullmakten kan kun benyttes for digitale helsetjenester på Helsenorge “apotek” - Fullmakten kan benyttes på apotek og bandasjister “helse_og_omsorgsektoren” - Mulig framtidig: Fullmakten gjelder hele helse og omsorgssektoren |
pvk_ref | PVK reference | GUID i PVK som entydig identifiserer dette fullmaktsforholdet. (Samme GUID som i request) |
type | Fullmakt type | “ordinar”- Ordinær fullmakt “tildelt” - Tildelt fullmakt (fullmaktsgiver er ikke samtykkekompetent) |
sub | Subject | Fødselsnummer til fullmaktgiver |
sub_birthdate | Subject Birthdate | Fødselsdato til fullmaktsgiver Eks: "1956-07-12" |
sub_given_name | Actor given name | Fornavn til fullmaktshaver |
sub_family_name | Actor family name | Etternavn til fullmaktshaver |
sub_middle_name | Actor middle name | Mellomnavn til fullmaktshaver |
act_sub | Actor subject | Fødselsnummer til fullmaktshaver |
act_birthdate | Actor Birthdate | Fødselsdato til fullmakhaver Eks: "1986-07-10" |
act_given_name | Actor given name | Fornavn til fullmaktshaver |
act_family_name | Actor family name | Etternavn til fullmaktshaver |
act_middle_name | Actor middle name | Mellomnavn til fullmaktshaver |
act_scp | Actor scope | Omfanget av fullmakten. Dette er avtalte/definerte string-tokens som angir et eller flere omfang fullmakten kan ha (kan velges individuelt av innbygger, hvis flere). Disse verdiene defineres som del av fullmaktsdefinisjonen. verdier separert med “space” innefor strengen. |
iss | Issuer | Hvem som har generert tokenet, vil alltid være "personvern.helsenorge.no" |
nfb | Not Before | Tidspunktet for når tokenet er gyldig. Vil alltid ha samme verdi som tidspunktet det ble generert på |
exp | Expiration Time | Tidspunktet for når tokenet utløper |
iat | Issued At | Tidspunktet for når tokenet ble generert. Vil aldri være gyldig i mer enn 30 minutter |
Eks:
...
individuelt av innbygger, hvis flere). Disse verdiene defineres som del av fullmaktsdefinisjonen. verdier separert med “space” innefor strengen. | ||
iss | Issuer | Hvem som har generert tokenet, vil alltid være "personvern.helsenorge.no" |
nfb | Not Before | Tidspunktet for når tokenet er gyldig. Vil alltid ha samme verdi som tidspunktet det ble generert på |
exp | Expiration Time | Tidspunktet for når tokenet utløper |
iat | Issued At | Tidspunktet for når tokenet ble generert. Vil aldri være gyldig i mer enn 30 minutter |
Eks:
Code Block |
---|
{ "jti": "d8ef103b-df1f-494d-8625-8e5431cccb47", "aud": "apotek", "pvk_ref": "76daf7a1-3005-ea11-831a-000d3a29f858", "type":"ordinar", "sub": "13077204746", "sub_birthdate":"1972-07-13", "sub_given_name":"Ole", "sub_family_name": "Hansen", "sub_middle_name": "", "act_sub": "07118600295", "act_birthdate": "1986-11-07", "act_given_name": "Hanne", "act_family_name": "Pettersen", "act_middle_name": "Simensbråten", "act_scp": "no:apotek:journalinfo no:apotek:utleveringresepter", "iss": "personvern.helsenorge.no", |
...
"nbf": 1574150978, |
...
"exp": 1574152778, |
...
"iat": 1574150978 |
...
} |
Signatur
Tokenet genereres og signeres i Personvernkomponeten (PVK) ved bruk av dennes virksomhetssertifikat. Signeringsalgoritmen som benyttes er RSA-SHA256.
Eks: på fullt JWT-token:
{
“jwt”: “eyJhbGciOiJSUzI1NiIsImtpZCI6IjA0NkI4QUMxQjAyRjk0RTk0M0E4MTM3Q0Y1MkVBM0Y0RDdDNzg0MjkiLCJ0eXAiOiJKV1QiLCJ4NWMiOlsiTUlJRS9EQ0NBK1NnQXdJQkFnSUxBWGozYVN3cnN6TllEYUl3RFFZSktvWklodmNOQVFFTEJRQXdVVEVMTUFrR0ExVUVCaE1DVGs4eEhUQWJCZ05WQkFvTUZFSjFlWEJoYzNNZ1FWTXRPVGd6TVRZek16STNNU013SVFZRFZRUUREQnBDZFhsd1lYTnpJRU5zWVhOeklETWdWR1Z6ZERRZ1EwRWdNekFlRncweE9EQXhNak13TnpRNE1EVmFGdzB5TVRBeE1qTXlNalU1TURCYU1HSXhDekFKQmdOVkJBWVRBazVQTVNFd0h3WURWUVFLREJoRVNWSkZTMVJQVWtGVVJWUWdSazlTSUVVdFNFVk1VMFV4SERBYUJnTlZCQU1NRTFCRlVsTlBUbFpGVWs1VVNrVk9SVk5VUlZJeEVqQVFCZ05WQkFVVENUa3hOVGt6TXpFME9UQ0NBU0l3RFFZSktvWklodmNOQVFFQkJRQURnZ0VQQURDQ0FRb0NnZ0VCQUxFSlpVZkpUdVZZaTVVMW1BTWdyeHZOaUxyU2lHbEM5Rmk4N2JwWW5ZQzVUTW5kcFpMNjdQdG9EcldtdHdJL2J3N281anZzYmJKQWdNdU5Ca2Fic0JjcnNSbFBpczBEQkJVa29LQThRSUVuam1oakhVRWYzR044bnNEZ1RGQlB1cFNHRzJwVUIreFRKNTVTZTVMU0c1am9XU3kzZmtNRzRSbjljVG5SbjJ1WU1zSjNXM2grRzk3OTlQdWlCaUxINjVyVGQ5OUhsWmZibEtyZDM4MjcwZFlIT2dqY3ZWMHhqSjVCYXpVRExubGtzREU2SFVZMStabkFSOWlrbWZzWEtLTWlNQXdwTW9UejgrRDlqWVU3UWxOdkVQR0tZVm0yTldQVloxaTZDdGo4L05TZnl4c0ZQR0RLN1pzbXpwSk9LaTJVajcwa3RiRytaV3lhT1h3OTU1c0NBd0VBQWFPQ0FjSXdnZ0crTUFrR0ExVWRFd1FDTUFBd0h3WURWUjBqQkJnd0ZvQVVQNjcxZUF1U28zQWdOVjlhK3Zja29GSUI4RUV3SFFZRFZSME9CQllFRkwyNzJkNXZyTmpzQzJjOVFIY3U5ZkY4Zko5Sk1BNEdBMVVkRHdFQi93UUVBd0lHUURBV0JnTlZIU0FFRHpBTk1Bc0dDV0NFUWdFYUFRQURBakNCdXdZRFZSMGZCSUd6TUlHd01EZWdOYUF6aGpGb2RIUndPaTh2WTNKc0xuUmxjM1EwTG1KMWVYQmhjM011Ym04dlkzSnNMMEpRUTJ4aGMzTXpWRFJEUVRNdVkzSnNNSFdnYzZCeGhtOXNaR0Z3T2k4dmJHUmhjQzUwWlhOME5DNWlkWGx3WVhOekxtNXZMMlJqUFVKMWVYQmhjM01zWkdNOVRrOHNRMDQ5UW5WNWNHRnpjeVV5TUVOc1lYTnpKVEl3TXlVeU1GUmxjM1EwSlRJd1EwRWxNakF6UDJObGNuUnBabWxqWVhSbFVtVjJiMk5oZEdsdmJreHBjM1F3Z1lvR0NDc0dBUVVGQndFQkJINHdmREE3QmdnckJnRUZCUWN3QVlZdmFIUjBjRG92TDI5amMzQXVkR1Z6ZERRdVluVjVjR0Z6Y3k1dWJ5OXZZM053TDBKUVEyeGhjM016VkRSRFFUTXdQUVlJS3dZQkJRVUhNQUtHTVdoMGRIQTZMeTlqY25RdWRHVnpkRFF1WW5WNWNHRnpjeTV1Ynk5amNuUXZRbEJEYkdGemN6TlVORU5CTXk1alpYSXdEUVlKS29aSWh2Y05BUUVMQlFBRGdnRUJBR3lpeW9HZU9xNGdXODdTUitPbTlYUElYeTJJZUh2ekl4Mk5ETE81bDVmY2l6NzVGMFVuaW83QU4vTkpGM0I3aVRCNldyS2Z1ZjFGQ2xZVlpSV2FLSFIwUEZPTjk3T1UwRHEzNU03Qi9rM0YrWjMvb05QYUxvTkdSTE9SeWJaMGxEdTNxdmFsNy9Mb1RINjg1S25RQ3lpeVFPN25PV1FPaUV0b1J6N0EzTndGdlhQU2lOTkpmVktqdG9NUk90a0VuWWplTDJEL0k2cjVXSjhpSHM0d1ZGeDk5UHFxRUpmQmp1NmtHMEZnY09ReUdOLzJHSTdCenVneDdSWnpncWZKUGczYUdKV2hiWjJmMmhiVU9VNHZKamJPZGp5djBmWmt4aVRmazJnQ2ZIV2xldVZuRFNTN1dNU08vb05BNVB1Zm91ZldRNWhzM0c1eXRuU0lMUmR3SXAwPSJdfQ.eyJqdGkiOiJkOGVmMTAzYi1kZjFmLTQ5NGQtODYyNS04ZTU0MzFjY2NiNDciLCJhdWQiOiJodHRwczovL2hlbHNlbm9yZ2Uubm8iLCJzdWIiOiIxMzA3NzIwNDc0NiIsInB2a19yZWYiOiI3NmRhZjdhMS0zMDA1LWVhMTEtODMxYS0wMDBkM2EyOWY4NTgiLCJhY3Rfc3ViIjoiMDcxMTg2MDAyOTUiLCJhY3RfdHlwIjoiZnVsbG1ha3QiLCJhY3Rfc2NwIjoiaG4ubm8ucmVnaXN0ZXJpbm5zeW4gaG4ubm8uam91cm5hbGlubnN5biBobi5uby5kaWdpdGFsZXRqZW5lc3RlciIsImlzcyI6InBlcnNvbnZlcm4uaGVsc2Vub3JnZS5ubyIsIm5iZiI6MTU3NDE1MDk3OCwiZXhwIjoxNTc0MTUyNzc4LCJpYXQiOjE1NzQxNTA5Nzh9.fejVgmjNubQJ7GozeMiD9AyvSCeH79hAr62TLLzc_q6pvuTrPSMrdIX6vnilwl2pTrWfwOgPMgL8o31L0XTHsAoydHpvpm5q8AVs68Nmf8G8z7HtbPhe2k6vy34QC5z2cqHCopLD6wUPeRAZNDm6bBDZqsVntT5mkKQKvRcWGny93aMY5JwN19rLDSTjjzjXZhRTurqSRW3NcQfpISa6ixNvrXo0wLgMJxXNOH-UdP0a10GaDMbDi1G9cp7OsiBmL-BXkNopEsj021xwGpuMzTp0ZBPEIoAcPyR8SxEMAWukvn6ycTRDvV9UyFd7lgqo5zYRu0YEP6CLV6MQl9YZaQ”
}