# Koppeling leggen

## Beveiliging

Om een beveiligde koppeling tot stand te brengen, moet deze worden voorzien van mTLS met een PKIoverheid-servercertificaat of een UZI-servercertificaat.

## Authenticatie

Bij de server-to-server authenticatie wordt er gebruikgemaakt van oauth2. Opvragende applicaties kunnen een token aanvragen bij de autorisatieserver van VIPLive.&#x20;

De tokenaanvraag kan worden uitgevoerd op basis van de oauth2 client-credentials grant-type met de `private_key_jwt` authenticatie. Dit zijn internationale standaarden die gedocumenteerd zijn op de volgende pagina's:&#x20;

* <https://oauth.net/2/grant-types/client-credentials>
* <https://oauth.net/private-key-jwt/>

De validatie van de tokenaanvraag wordt uitgevoerd op basis van het JWKS-endpoint dat de opvragende applicatie beschikbaar heeft gesteld.&#x20;

### Voorbeeld tokenaanvraag: <a href="#voorbeeldbericht" id="voorbeeldbericht"></a>

```
HTTP POST https://viplive-token-endpoint/oauth2/token

grant_type=client_credentials
&client_id=your-application-clientid
&scope=your-required-scope
&client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer
&client_assertion=eyJraWQiOiIzZDVhNWE2MTE5NGNiMTQ5MmM2MzhjNWJkZWUyYzJjNjQ4YTE0NGQ3LVBTMjU2IiwidHlwIjoiSldUIiwiYWxnIjoiUFMyNTYifQ.eyJhdWQiOiJodHRwOi8vdmlwbGl2ZS10b2tlbi1lbmRwb2ludC9vYXV0aDIvdG9rZW4iLCJzdWIiOiJ5b3VyLWFwcGxpY2F0aW9uLWNsaWVudGlkIiwiaXNzIjoieW91ci1hcHBsaWNhdGlvbi1jbGllbnRpZCIsImV4cCI6MTc3MTU4NDE2NSwiaWF0IjoxNzcxNTg0MTYwLCJqdGkiOiIyZjU5YzVlMC1mNWI1LTRjZGEtOGU4MS00NWMxMGNmNmZjOGMifQ.iuRhs5IhWWMX1Z-FrF1qKLBt4e16WDrnUkZg3-ZhBtWFPC1ZGgivnO-o07Jk0Vhj43g0NOIKaBf1CwmpEPB0oqyCMgsWPnmIxgnBpF9x2m7i-bVLua0q0p4I8eoKtRzJGCZqK_LbUo8fGsaSCP60eqi-dULTJhijRPdwbX_9Jq2PxzGo-rP0b2nFdcqRKPi3JMFvlYHzNKM5fQz_Di_ZkvAz-C9sABhy1sWdDen4tcULELpyJ27EccDWIZws8y8Jm1lZKDI2mWdVTRfkr_H6e0x4RnRyJfPUwTu6Js04PLv7AKlvMPAxt984rnNaaWB7xXa9gDvCPvcXZ8bIlfTmKYP0BTUeBpPbkDEkmiPUGewKuisC7OFuvov8LHdqsiMfJeITie--qUCREhUx1RHIWo034N1XJkm5UhSHHKJGQwG_EYSy0QfkDustORN3hbUl56Hhj1v2wi410543yf5gpanpCBZwxmuPFfcRZ-1JThPie9G-cX6f5ScZdIL6sFzs// Some code
```

## Verplichte HTTP-headers

Alle acties die worden uitgevoerd op de FHIR-server worden geauditlogd. Hierbij is de context, vanuit welke organisatie en medewerker ook van belang.&#x20;

Deze informatie kan worden meegestuurd m.b.v. HTTP-headers. Bij alle requests richting de FHIR-server zijn de volgende headers verplicht:&#x20;

<table><thead><tr><th width="300">HTTP header</th><th width="564">Vulling</th><th data-hidden>Voorbeeld</th></tr></thead><tbody><tr><td>X-Subject-Organization-Id</td><td><p>Unieke identificatiecode van de organisatie van de gebruiker. De waarde moet een OID zijn.</p><p></p><p>Bij voorkeur URA-nummer, maar dit mag ook een ander herleidbaar identificatienummer zijn.   </p></td><td></td></tr><tr><td>X-Subject-Id</td><td>Unieke identificatiecode van de gebruiker. De waarde moet een OID zijn.</td><td></td></tr><tr><td>X-Subject-role</td><td>Rol van de gebruiker. Dit mag een OID bevatten, of vrije tekst.</td><td></td></tr><tr><td>X-Request-ID</td><td>Unieke identifier van HTTP-request</td><td></td></tr><tr><td>X-Correlation-Id</td><td>Unieke identifier van 'sessie'</td><td></td></tr></tbody></table>

Voorbeeld:

```
X-Request-Id: aece34a2-058e-4a39-b4c5-340f542e8fd1
X-Correlation-Id: 8933e94d-de61-45ff-8025-fbf711f22087
X-Subject-Organization-Id: 2.16.528.1.1007.3.3.12345678 //URA OID
X-Subject-Id: 2.16.840.1.113883.2.4.3.164.2.2.2.unique-user-id // TOPICUS VIPLIVE OID
X-Subject-role: Huisarts
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://viplive-interop.gitbook.io/viplive-notified-pull/direct-pull/koppeling-leggen.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
