# 4. Token request ontvanger

## Relevante TA Notified Pull hoofdstukken

* 3.2 Resource server authorization: OAuth 2.0
* Appendix: Examples

## Voorbeeldbericht

De aanvraag van een token bij VIPLive kan via de Databroker Authorization Server. Het te gebruiken endpoint is te vinden in het `token_endpoint` veld in de SMART on FHIR configuratie. Zie [1. Koppeling leggen](/viplive-notified-pull/notified-pull/1.-koppeling-leggen.md).

Aangezien de ontvangende partij hier een token aanvraag doet zijn onderstaande velden de omgekeerde representatie van wat er in [2. Token request verzender](/viplive-notified-pull/notified-pull/2.-token-request-verzender.md)aangeleverd wordt. Ook hier zullen tussen beide partijen afspraken gemaakt moeten worden over de vulling.

Aan de vulling van sommige velden binnen de client en authorization assertions stelt VIPLive wel bepaalde eisen.

Voor een volledig voorbeeld van een tokenaanvraag zie *Appendix: Examples* in de TA Notified Pull.

### **Client assertion**

<table><thead><tr><th width="131">Veld</th><th>Vereiste vulling</th></tr></thead><tbody><tr><td>iss</td><td><code>client-id</code> van het ontvangende systeem</td></tr><tr><td>aud</td><td><code>token_endpoint</code> uit de SMART on FHIR configuratie</td></tr><tr><td>sub</td><td><code>client-id</code> van het ontvangende systeem</td></tr></tbody></table>

#### Voorbeeld client assertion

```json
{
    "kid": "3d5a5a61194cb1492c638c5bdee2c2c648a144d7-PS256",
    "typ": "JWT",
    "alg": "PS256"
}
.{
    "aud": "https://auth.test-datakluis.shared.topicuszorg.nl/oauth2/token",
    "sub": "ontvanger-clientid",
    "iss": "ontvanger-clientid",
    "exp": 1743165894,
    "iat": 1743165889,
    "jti": "bb01ca5a-9dd1-41d8-96c4-631aa99c0588"
}
```

### Authorization assertion

<table><thead><tr><th width="197">Veld</th><th>Vereiste vulling</th></tr></thead><tbody><tr><td>iss</td><td><code>client-id</code> van het ontvangende systeem</td></tr><tr><td>sub</td><td><strong>Ontvanger is een zorgaanbieder binnen het systeem:</strong>  OID van de AGB-code van de ontvangende zorgaanbieder.<br><br><strong>Ontvanger is het systeem:</strong> OID van "VIPLive Databroker Oauth2 client" + client-id  van het ontvangende systeem<br><br>OID voor <em>VIPLive Databroker Oauth2 client:</em> 2.16.840.1.113883.2.4.3.164.2.5.1</td></tr><tr><td>user_id</td><td><strong>Ontvanger is een zorgaanbieder binnen het systeem:</strong> OID van de persoonlijke AGB-code van ontvangende zorgverlener<br><em>(of OID van een ander herleidbaar identificatiemiddel)</em><br><br><strong>Ontvanger is het systeem:</strong> Veld wordt weggelaten.</td></tr><tr><td>user_role</td><td><p><strong>Ontvanger is een zorgaanbieder binnen het systeem:</strong> Rol van de ontvangende zorgverlener</p><p></p><p><strong>Ontvanger is het systeem:</strong> Veld wordt weggelaten. </p></td></tr><tr><td>authorizer</td><td>OID van de AGB-code van verzendende zorgaanbieder</td></tr><tr><td>authorization_base</td><td><code>authorization-base</code> die met de Notify vanuit VIPLive mee is gekomen</td></tr></tbody></table>

#### Voorbeeld van authorization assertion:

#### 1. Ontvanger is zorgaanbieder binnen het systeem

```json
{
    "kid": "3d5a5a61194cb1492c638c5bdee2c2c648a144d7-PS256",
    "typ": "JWT",
    "alg": "PS256"
}
{
    "aud": "https://auth.test-datakluis.shared.topicuszorg.nl/oauth2/token",
    "sub": "2.16.840.1.113883.2.4.6.1.99999999",
    "user_role": "hoofdbehandelaar",
    "authorization_base": "5754d12a-bfb0-4e3f-847a-9460b45f3a92",
    "authorizer": "2.16.840.1.113883.2.4.6.1.11111111",
    "user_id": "2.16.840.1.113883.2.4.6.1.01777777",
    "patient": "urn:oid:2.16.840.1.113883.2.4.6.3.urn:oid:2.16.840.1.113883.2.4.6.3.999999151",
    "iss": "ontvanger-clientid",
    "exp": 1743165894,
    "iat": 1743165889,
    "jti": "e74c94ce-3421-47c0-8ff1-be8a10f772c8"
}
```

#### 2. Ontvanger is het systeem

```json
{
    "kid": "3d5a5a61194cb1492c638c5bdee2c2c648a144d7-PS256",
    "typ": "JWT",
    "alg": "PS256"
}
{
    "aud": "https://auth.test-datakluis.shared.topicuszorg.nl/oauth2/token",
    "sub": "2.16.840.1.113883.2.4.3.164.2.5.1.ontvanger-clientid",
    "authorization_base": "5754d12a-bfb0-4e3f-847a-9460b45f3a92",
    "authorizer": "2.16.840.1.113883.2.4.6.1.11111111",
    "patient": "urn:oid:2.16.840.1.113883.2.4.6.3.urn:oid:2.16.840.1.113883.2.4.6.3.999999151",
    "iss": "ontvanger-clientid",
    "exp": 1743165894,
    "iat": 1743165889,
    "jti": "e74c94ce-3421-47c0-8ff1-be8a10f772c8"
}
```


---

# 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/notified-pull/4.-token-request-ontvanger.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.
