Specificaties AORTA Stelseltoken
Formaat van het token
Feature | |
|---|---|
Type | Subfeature |
Versie | 1.1.0 |
Systeemrolcode | - |
Groep | Tokens |
Gepubliceerd | |
Delta | Toegevoegd JSON schema https://www.vzvz.nl/schema/stelsel-token/1.0.2 ter validatie op verzoek van de XIS-leveranciers. Gereed. Versie verhoogd van 1.0.1 naar 1.0.2. Toegevoegd server.properties om informatie over de servers beschikbaar te maken. Ready for review. Versie verhoogd van 1.0.2 naar 1.1.0 |
Het AORTA stelseltoken is een JWT, die bestaat uit een header, een payload en een signature, waarbij gebruik wordt gemaakt van JWS Compact Serialization.
De header van het token bevat de volgende attributen:
Claim | Vaste waarde | Toelichting |
|---|---|---|
alg | RS256 | |
typ | aorta-st+JWT | "aorta-st" is een afkorting voor AORTA stelseltoken |
x5c | - | De van toepassing zijnde keten van PKIX certificaten. Deze dient te worden gebruikt om de signature van het token te valideren. |
Het token wordt op basis van RS256 (RSA Signature met SHA-256), digitaal ondertekend met de private key van de AORTA Stelselnode. De signature wordt geplaatst over de header en de payload.
Het certificaat waarmee de signature wordt geplaatst mag slechts worden gebruikt voor signing van het AORTA stelseltoken.
Het token is opgebouwd in de volgende structuur, een JSON schema is beschikbaar en de payload is verder gespecifieerd in de tabel hieronder:
{
"jti": "string (uuid)",
"ver": "string (major.minor)",
"iss": "string (https-url)",
"server": [
{
"role": "string (role-ID)",
"base": "string (uri)",
"properties": {
"fqdn": "string",
"fhirVersion": "string | null",
"aortaVersion": "string | null"
}
}
]
}
Claims | Cardinaliteit | Type | Voorbeeld | Toelichting | ||
|---|---|---|---|---|---|---|
| 1..1 | string | - | Unieke ID van het token | ||
| 1..1 | string | “ | De versie van de tokendefinitie die wordt gehanteerd | ||
| 1..1 | string | - | HTTPS-URL van de AORTA Stelselnode | ||
| 0..n | array | - | Server object met subclaims. Eén object per server in het AORTA-stelsel. | ||
| 1..1 | string | “ | Role-ID welke de functionele rol van de server beschrijft. Moet een waarde uit onderstaande tabel bevatten. Let op: een server met dezelfde rol kan met verschillende base-URL's meerdere keren voorkomen. | ||
| 1..1 | string | “ | Base-URL van de server. | ||
| 1..1 | object | De eigenschappen van de server. | |||
| 1..1 | string | " | FQDN waarop de server bereikbaar is. Moet gelijk zijn aan het <FQDN> deel van de | ||
| 0..1 | string | " | Ondersteunde FHIR‑versie (indien van toepassing). Moet gelijk zijn aan het <fhir-version> deel van de | ||
| 0..1 | string | “ | Ondersteunde AORTA interface versie. Moet gelijk zijn aan het <aorta-interface-version> deel van de | ||
Server rollen in het stelseltoken
Onderstaande tabel toont welke servers/componenten momenteel zijn opgenomen in het token:
Role | Role-ID | Opgenomen in stelseltoken | Toelichting |
|---|---|---|---|
|
| ja | Autorisatie Server ZA |
|
| nee | Medisch Autorisatie Protocol Server |
|
| ja | Autorisatie Server MedMij |
|
| nee | Autorisatie Server GTK |
|
| ja | Resource Broker ZA-in |
|
| ja | Resource Broker MedMij-in |
|
| ja | Resource Broker v3-in |
|
| ja | Resource Broker GTK |
|
| nee | Toegangslog (oude namen: Resource Broker LOG en LOG Server) |
|
| ja | Resource Broker VnC |
|
| nee | VWI/ACT Server |
|
| nee | Lokalisatie Server |
|
| nee | SDS Server |
|
| ja | Resource Broker APR |
|
| nee | Abonnementenregister |
|
| nee | Notificatie Broker |
|
| ja | Adressering Server |
|
| nee | Register Sync Proxy |
|
| ja | Transformatie Server |
JSON Schema
De $id lijnt op met de feature versie
Validatie wordt ondersteund door JSON Schema Validator - Newtonsoft
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://www.vzvz.nl/schema/stelsel-token/1.1.0",
"title": "StelselToken Metadata Schema",
"type": "object",
"properties": {
"jti": {
"type": "string",
"format": "uuid",
"description": "Unieke ID van het stelseltoken (JWT ID)"
},
"ver": {
"type": "string",
"pattern": "^\\d+\\.\\d+$",
"description": "Versie van de tokendefinitie (major.minor, bijv. 1.1)"
},
"iss": {
"type": "string",
"format": "uri",
"description": "HTTPS-URL van de AORTA Stelselnode"
},
"server": {
"type": "array",
"description": "Lijst van servers/componenten in het AORTA-stelsel",
"items": {
"type": "object",
"properties": {
"role": {
"type": "string",
"pattern": "^[0-9]+$",
"description": "Role-ID welke de functionele rol van de server beschrijft (bijv. '100', '200')",
"$comment": "Rol van de server. Een rol mag meerdere keren voorkomen met verschillende base-URL's."
},
"base": {
"type": "string",
"format": "uri",
"description": "Basis-URL van de server (bijvoorbeeld https://<FQDN>/rbzain/broker/fhir/R4/v1)"
},
"properties": {
"type": "object",
"description": "Decompositie van de eigenschappen van de server.base",
"properties": {
"fqdn": {
"type": "string",
"description": "FQDN waarop de component bereikbaar is (bijv. myhost.customer.org)"
},
"fhirVersion": {
"type": "string",
"description": "Ondersteunde FHIR-versie (bijv. R4)"
},
"aortaVersion": {
"type": "string",
"description": "Ondersteunde AORTA versie (bijv. v1)"
}
},
"required": ["fqdn"],
"additionalProperties": false
}
},
"required": ["role", "base", "properties"],
"additionalProperties": false
}
}
},
"required": ["jti", "ver", "iss", "server"],
"additionalProperties": false
}
Voorbeeld
{
"jti": "436f2fd2-5e01-11ef-a153-000d3a2286ca",
"ver": "1.1",
"iss": "[aorta-base-URL]/stelseltoken/metadata/v1",
"server": [
{
"role": "100",
"base": "https://zim.poc.lsp.aorta-zorg.nl",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://ontmedmij-vzvz.ezorg.aorta-zorg.nl/verplicht",
"properties": {
"fqdn": "ontmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://ontmedmij-vzvz.ezorg.aorta-zorg.nl/optioneel",
"properties": {
"fqdn": "ontmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://tstmedmij-vzvz.ezorg.aorta-zorg.nl/verplicht",
"properties": {
"fqdn": "tstmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://tstmedmij-vzvz.ezorg.aorta-zorg.nl/optioneel",
"properties": {
"fqdn": "tstmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://accmedmij-vzvz.ezorg.aorta-zorg.nl/verplicht",
"properties": {
"fqdn": "accmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://accmedmij-vzvz.ezorg.aorta-zorg.nl/optioneel",
"properties": {
"fqdn": "accmedmij-vzvz.ezorg.aorta-zorg.nl"
}
},
{
"role": "150",
"base": "https://ontmedmij-issuer.zorgnet.vzvz.nl/verplicht",
"properties": {
"fqdn": "ontmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "150",
"base": "https://ontmedmij-issuer.zorgnet.vzvz.nl/optioneel",
"properties": {
"fqdn": "ontmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "150",
"base": "https://tstmedmij-issuer.zorgnet.vzvz.nl/verplicht",
"properties": {
"fqdn": "tstmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "150",
"base": "https://tstmedmij-issuer.zorgnet.vzvz.nl/optioneel",
"properties": {
"fqdn": "tstmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "150",
"base": "https://accmedmij-issuer.zorgnet.vzvz.nl/verplicht",
"properties": {
"fqdn": "accmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "150",
"base": "https://accmedmij-issuer.zorgnet.vzvz.nl/optioneel",
"properties": {
"fqdn": "accmedmij-issuer.zorgnet.vzvz.nl"
}
},
{
"role": "200",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbzain/fhir/stu3/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "STU3",
"aortaVersion": "v1"
}
},
{
"role": "200",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbzain/fhir/r4/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "R4",
"aortaVersion": "v1"
}
},
{
"role": "250",
"base": "https://ontmedmij-inlog.vzvz.nl/fhir/stu3",
"properties": {
"fqdn": "ontmedmij-inlog.vzvz.nl",
"fhirVersion": "STU3"
}
},
{
"role": "250",
"base": "https://ontmedmij-inlog.vzvz.nl/fhir/r4",
"properties": {
"fqdn": "ontmedmij-inlog.vzvz.nl",
"fhirVersion": "R4"
}
},
{
"role": "250",
"base": "https://tstmedmij-inlog.vzvz.nl/fhir/stu3",
"properties": {
"fqdn": "tstmedmij-inlog.vzvz.nl",
"fhirVersion": "STU3"
}
},
{
"role": "250",
"base": "https://tstmedmij-inlog.vzvz.nl/fhir/r4",
"properties": {
"fqdn": "tstmedmij-inlog.vzvz.nl",
"fhirVersion": "R4"
}
},
{
"role": "250",
"base": "https://accmedmij-pgo.vzvz.nl/fhir/stu3",
"properties": {
"fqdn": "accmedmij-pgo.vzvz.nl",
"fhirVersion": "STU3"
}
},
{
"role": "250",
"base": "https://accmedmij-pgo.vzvz.nl/fhir/r4",
"properties": {
"fqdn": "accmedmij-pgo.vzvz.nl",
"fhirVersion": "R4"
}
},
{
"role": "270",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbv3/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"aortaVersion": "v1"
}
},
{
"role": "300",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rblog/fhir/r4/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "R4",
"aortaVersion": "v1"
}
},
{
"role": "400",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbvnc/fhir/stu3/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "STU3",
"aortaVersion": "v1"
}
},
{
"role": "400",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbvnc/fhir/r4/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "R4",
"aortaVersion": "v1"
}
},
{
"role": "500",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbvwi/fhir/r4/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "R4",
"aortaVersion": "v1"
}
},
{
"role": "620",
"base": "https://zim.poc.lsp.aorta-zorg.nl/fhir",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl"
}
},
{
"role": "630",
"base": "https://zim.poc.lsp.aorta-zorg.nl/rbabr/fhir/r4/v1",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl",
"fhirVersion": "R4",
"aortaVersion": "v1"
}
},
{
"role": "640",
"base": "https://zim.poc.lsp.aorta-zorg.nl/adresseringservice",
"properties": {
"fqdn": "zim.poc.lsp.aorta-zorg.nl"
}
}
]
}