Interfaces Autorisatie Server GTK
Metadata Interface
Feature | |
---|---|
Type | Service |
Versie | 1.0.0 |
Groep | GTK |
Gepubliceerd |
|
Delta | Initiële versie van feature. |
Use case | - |
Feature | Versie | Dependency | Aanbieder | Afnemer |
---|
Metadata
De metadata van de Autorisatie Server kan, conform RFC 8414, worden opgehaald op een well-known URL die kan worden geconstrueerd m.b.v. de <iss> claim uit het token (zie ook section-3.1 van RFC8414). De Authorization Server Metadata Response bevat de volgende attributen. Dit betekent dat bij een iss die gelijk is aan: https://FQDN/some-path-extension, de metadata kan worden verkregen bij: https://FQDN/.well-known/oauth-authorization-server/some-path-extension.
De metadata omvat de volgende attributen:
issuer
;token_endpoint
;jwks_uri
;response_types_supported
;signed_metadata
.
De response die wordt geretourneerd bevat daarnaast de volgende headers:
Cache-Control: must-revalidate, max-age=<max-age-metadata>
Pragma: no-cache
Een client mag verkregen metadata conform de Cache-Control
header directives, zoals beschreven in RFC 7234, cachen.
De waarde van max-age-metadata
is configureerbaar in de autorisatie server. Initiële waarde is 14400 seconden (4 uur).
Toelichting verkrijgen JWKS
Wanneer een uitgegeven token/assertion een iss attribuut bevat met waarde:
“https://zim.prf001.lsp.aorta-zorg.nl/asgtk/jwt”
Dan kan de metadata op de volgende wijze worden opgehaald:
GET https://zim.prf001.lsp.aorta-zorg.nl/.well-known/oauth-authorization-server/asgtk/jwt
De metadata bevat dan ondermeer een attribuut jwks_uri. Dit attribuut kan bijvoorbeeld de volgende waarde hebben:
“https://zim.prf001.lsp.aorta-zorg.nl/asgtk/jwks.json”
De JWKS kan dan op de volgende wijze worden opgehaald:
GET https://zim.prf001.lsp.aorta-zorg.nl/asgtk/jwks.json
Een server die de signature van een token/assertion wil controleren hoeft dus vooraf geen informatie te hebben over de publieke sleutel, of over een uri waarop een sleutel kan worden verkregen. De benodigde informatie komt mee via de iss claim van het betreffende token/assertion.
Voor servers die tokens/assertions willen controleren is het wel zaak om een registratie te hebben van iss URL’s die je vertrouwt, en van wie je tokens/assertions accepteert.
JWKS
De public key waarmee de digitale handtekening kan worden gecontroleerd wordt als een JWK beschikbaar gesteld. De URL waarop de JWK Set kan worden opgevraagd (jwks_uri
) maakt deel uit van de AS metadata response. Iedere JSON Web Key (JWK) in de set, die beschikbaar wordt gesteld op de jwks_uri
, bevat een kid
parameter. De juiste JWK in de JWK Set wordt gevonden o.b.v. de waarde van het kid
attribuut in de header van de ontvangen JWT.
De response die wordt geretourneerd na een HTTP GET op de jwks_uri
bevat naast de JWK Set de volgende headers:
Cache-Control: must-revalidate, max-age=<max-age-jwks>
Pragma: no-cache
Een client mag verkregen JWK's conform de Cache-Control
header directives, zoals beschreven in RFC 7234, cachen.
De waarde van max-age-jwks
is configureerbaar in de autorisatie server. Initiële waarde is 14400 seconden (4 uur).
De JWK bevat de volgende attributen, waar de definitie van de attributen kan worden gevonden in RFC 7517 en RFC 7518:
"kty":"EC"
"alg":"ES512"
"use":"sig"
"kid":"<the identifier of the key-pair used to sign this JWT>"
"x5c":"<de van toepassing zijnde keten van PKIX certificaten>"
"crv":"P-521"
"x":"<the x coordinate for the Elliptic Curve point>"
"y":"<the y coordinate for the Elliptic Curve point>"
TWIIN Assertion Interface
Feature | |
---|---|
Type | Service |
Versie | 1.1.0 |
Groep | GTK |
Gepubliceerd |
|
Delta | Aanvullende requirements m.b.t. component logging. Toevoeging specificaties voor client_assertion en assertion. Toevoeging audience attribuut op interface, zodat de aud in de client_assertion en assertion correct kan worden gevuld. Toevoeging client_id attribuut op interface, zodat de sub in de client_assertion correct kan worden gevuld. |
Use case |
Feature | Versie | Dependency | Aanbieder | Afnemer |
---|---|---|---|---|
1.1.0 | >=* | >=* | ||
1.1.0 | AORTA-ID HTTP Header | >=1.0.0 | >=1.0.0 | |
1.1.0 | >=* | - | ||
1.1.0 | >=1.0.0 | - | ||
1.1.0 | >=* | - | ||
1.1.0 | >=* | - |
Inhoud en formaat van een issueAssertionsRequest
Middels deze interface kunnen een Twiin client_assertion en een Twiin assertion worden verkregen op basis van een AORTA access_token.
Een issueAssertionsRequest wordt op de volgende wijze verzonden:
POST [base endpointadres]/issueAssertionsRequest/v1
Bij het verzenden van een issueAssertionsRequest dienen de volgende HTTP headers te worden meegezonden:
Feature | AORTA-ID HTTP Header |
---|---|
Type | Subfeature |
Versie | 1.0.0 |
Groep | HTTP Headers |
Gepubliceerd |
|
Delta | Initiële versie van feature. |
AORTA-ID: initialRequestID=<UUID conform RFC4122>; requestID=<UUID conform RFC4122>
Het initialRequestID attribuut bevat het ID van het allereerste request in de hele keten en dient te worden opgenomen in de logbestanden van alle partijen in de keten, zodat bij foutopsporing de verschillende logbestanden aan elkaar kunnen worden gerelateerd.
Het requestID is voor iedere request message uniek. In requests wordt deze gegenereerd door de client. Ook het requestID dient te worden opgenomen in de verschillende logbestanden, zodat altijd duidelijk is op welk bericht een log entry van toepassing is.
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een issueAssertionsRequest is:
{
"sourceTokenType": "",
"sourceToken": "",
"clientId": "",
"audience": ""
}
Input parameters:
Name | Cardinality | Type | Toelichting |
sourceTokenType | 1..1 | String | Vaste waarde: “aorta-at+JWT”. |
sourceToken | 1..1 | Object | Een JWT-based AORTA access_token. |
clientId | 1..1 | String | De FQDN van de client (RB GTK) die deze Assertion zal gaan verzenden in een Twinn token request. |
audience | 1..1 | String | De HTTPS-URL van het externe GTK (authorization endpoint) die de assertion en client_assertion gaat ontvangen. |
Inhoud en formaat van een issueAssertionsResponse
Bij het verzenden van een issueAssertionsResponse dienen de volgende HTTP headers te worden meegezonden:
Content-Type: application/json; charset=utf-8
Het technische formaat van de HTTP body van een issueAssertionsResponse is:
{
"clientAssertion": "",
"assertion": "",
"scope": ""
}
Output parameters:
Name | Cardinality | Type | Toelichting |
clientAssertion | 1..1 | Object | |
assertion | 0..1 | Object | Een AORTA-TWIIN Authorization Grant Assertion. Aanwezig indien de hiervoor benodigde attributen werden meegegeven in het sourceToken. |
scope | 0..1 | String | Slechts aanwezig indien een assertion wordt geretourneerd die geen authorization_base bevat. |
HTTP statuscodes
HTTP statuscodes die kunnen worden geretourneerd zijn opgenomen in onderstaande tabel.
Omdat bepaalde Confluence macro’s nog niet worden ondersteund in de publicatie omgeving, bevat de tabel, in de publicatieomgeving, ook informatie over de wijze waarop de betreffende interface wordt geïmplementeerd in de server component. De statuscodes die kunnen worden geretourneerd zijn opgenomen in de kolom “Uitkomst”. De overige informatie mag worden genegeerd.
Stap | Omschrijving | Uitkomst |
---|---|---|
1 | Het systeem ontvangt een verzoek en start de verwerking. | |
2 | Het systeem toetst of het verzoek voldoet aan de interface specificatie. | Ongeldig verzoek statuscode 400 Bad Request |
Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow. | ||
3 | Het systeem controleert de geldigheid van het ontvangen sourceToken:
| Ongeldig token statuscode 401 Unauthorized |
Het systeem genereert de vereiste response en gaat verder met de exit stap van de main flow. | ||
4 | Het systeem genereert, o.b.v. van de gegevens in het ontvangen sourceToken, een AORTA-TWIIN Client Authentication Assertion en een AORTA-TWIIN Authorization Grant Assertion. | |
5 | Het systeem bepaalt op de volgende wijze of een scope attribuut moet worden opgenomen in de response: Indien de scope van het ontvangen AORTA access_token de string
bevat, dan moet als scope in de response worden opgenomen:
In overige gevallen wordt geen scope attribuut opgenomen in de response. In deze situaties dient het AORTA access_token een _vrb._vrb_authz_base claim te bevatten. Het systeem toetst dit. | AORTA access_token mist vereiste authorization_base statuscode 400 Bad Request |
6 <exit> | Het systeem retourneert een response naar de primaire actor. | Verwerking succesvol statuscode 200 OK |
TWIIN Token Interface
Feature | |
---|---|
Type | Service |
Versie | 1.0.0 |
Groep | GTK |
Gepubliceerd |
|
Delta | Initiële versie van feature: verwerken van een token request van een extern GTK. |
Use case |
Feature | Versie | Dependency | Aanbieder | Afnemer |
---|---|---|---|---|
1.0.0 | >=* | - | ||
1.0.0 | >2.* | - | ||
1.0.0 | >=* | - |
De TWIIN Token Interface is gespecificeerd in het TWIIN afsprakenstelsel:
Deze interface is gebaseerd op het Assertion Framework for OAuth 2.0 Client Authentication and Authorization Grants, en specifiek hierbinnen op het JSON Web Token (JWT) Profile for OAuth 2.0 Client Authentication and Authorization Grants.
Een tokenRequest wordt op de volgende wijze verzonden:
POST [base endpointadres]/token/v1