Document toolboxDocument toolbox

Happy flow

1. Authorization

1.1. Versturen van het authorization request door de DVP (1)

{
	"event": {
		"type": "send_authorization_request",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:14:23.518+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"method": "get",
		"client_id": "mijn.pgo.nl",
		"server_id": "api.as.dva.nl",
 		"uri": "https://api.as.dva.nl/2.0.0/authorize",
 	    "provider_id": "een.huisarts@medmij",
		"response_type": "code",
		"redirect_uri": "https://mijn.pgo.nl/medmij",
		"state": "ipcxyhlbjtvduydtneoaflwiismwxfmj"
    }
}

1.2. Ontvangen van het authorization request door de DVA (2)

{
	"event": {
		"type": "receive_authorization_request",
  		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:14:23.618+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"method": "get",
		"client_id": "mijn.pgo.nl",
		"server_id": "api.as.dva.nl",
		"uri": "https://api.as.dva.nl/2.0.0/authorize",
		"response_type": "code",
		"redirect_uri": "https://mijn.pgo.nl/medmij",
		"provider_id": "een.huisarts@medmij",
		"state": "ipcxyhlbjtvduydtneoaflwiismwxfmj"
    },
}

1.3. Versturen landingspagina (3)

{
	"event": {
		"type": "send_landing_page",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:14:53.718+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	}
}

1.4. Redirection vanuit User Agent naar Digid (4)

{
	"event": {
		"type": "send_authentication_request",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:14:53.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cd2-a2c0-4893-bd97-240621c3e488",
 		"method": "get", 
	    "client_id": "api.as.dva.nl",
		"server_id": "digid.nl",
		"uri": "https://app.digid.nl/digid-app"
    }
}

1.5. Redirect vanuit User Agent naar DVA (5)

{
	"event": {
		"type": "receive_authentication_response",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:16:53.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
		"request_id": "8b5d6cd2-a2c0-4893-bd97-240621c3e488"
	  	"status": "200"
    } 
}

1.6. Artifact resolution vanuit DVA naar DigiD (6)

Overgenomen vanuit de koppelvlakspecificatie: https://www.logius.nl/domeinen/toegang/digid/documentatie/koppelvlakspecificatie-digid-saml-authenticatie 

(http://docs.oasis-open.org/security/saml/Post2.0/sstc-saml-tech-overview-2.0.pdf)

{
	"event": {
		"type": "send_artifact_resolution_request",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:16:56.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "1ea26300-0178-4fea-8db3-f88390b896b4",
 		"method": "get", 
		"request_type": "SAML_assertion"
    }
}

1.7. Artifact response vanuit DigiD naar DVA (7)

{
	"event": {
		"type": "receive_artifact_response",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:16:57.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
  	  	"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488"
   		"status": 200
	}
}

1.8. Uitvoeren vroege beschikbaarheidstoets (8)

Deze logregel is optioneel. De beschikbaarheidstoets kan ook op het resource-endpoint worden uitgevoerd en is daarom niet verplicht bij autorisatie. Daarnaast is niet voorgeschreven hoe de beschikbaarheidstoets uitgevoerd moet worden. Misschien is alleen het resultaat van de beschikbaarheidstoets en de reden van falen belangrijk om te loggen.

1.9. Resultaat vroege beschikbaarheidstoets (9)

Deze logregel is optioneel. De beschikbaarheidstoets kan ook op het resource-endpoint worden uitgevoerd en is daarom niet verplicht bij autorisatie.

{
	"event": {
		"type": "response_availability_request",
		"location": "api.as.dva.nl", 
	    "datetime": "2023-03-28T22:16:58.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73", 
	    "trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"method": "get",
		"client_id": "mijn.pgo.nl",
		"server_id": "api.as.dva.nl",
		"service_id": "49",
	    "uri": "https://api.as.dva.nl/2.0.0/availability",
 	    "provider_id": "een.huisarts@medmij"
     },
	"response": {
		"status": 200 
      }
}

1.10. Tonen toestemmingsverklaring (10)

{
	"event": {
		"type": "send_consenting_page",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:16:59.718+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	}
}

1.11. Verkregen toestemming  (11)

{
	"event": {
		"type": "receive_consent",
		"location": "api.ti.dva.nl",
		"datetime": "2023-03-28T22:17:02.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "",
 		"method": "get", 
	    "client_id": "mijn.pgo.nl",
		"server_id": "api.ti.dva.nl",    
	},
	"response": {
		"status": 200 
     }
}

1.12. Versturen redirect van DVA naar DVP (12)

{
  "event": {
    "type": "send_authorization_response",
    "location": "as.dva.nl",
    "datetime": "2023-03-28T22:14:23.618+01:00",
    "session_id": "c6a27d45-4316-464e-81e0-48d5dbccacbb",
    "trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
  },
  "response": {
    "request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
    "status": 200
  }
}

1.13. Ontvangen redirect van DVA naar DVP (13)

{
	"event": {
		"type": "receive_authorization_response",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:17:20.657+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
		"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"status": 200    
	}
}

2. Token

2.1. Versturen token request vanuit DVP naar DVA (14)

{
	"event": {
		"type": "send_token_request",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:17:53.518+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "d804ccfd-1b9e-40a1-b740-9f59da562b55",
 		"method": "get", 
	    "client_id": "mijn.pgo.nl",
		"server_id": "api.ti.dva.nl",
		"uri": "https://api.ti.dva.nl/2.0.0/token",
		"grant_type": "authorization_code",
		"initiated_by": "person"
    }
}

2.2. Ontvangen token request door DVA (15)

{
	"event": {
		"type": "receive_token_request",
		"location": "api.ti.dva.nl",
		"datetime": "2023-03-28T22:17:54.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "d804ccfd-1b9e-40a1-b740-9f59da562b55",
 		"method": "get", 
	    "client_id": "mijn.pgo.nl",
		"server_id": "api.ti.dva.nl",
		"uri": "https://api.ti.dva.nl/2.0.0/token",
		"grant_type": "authorization_code"
    }
}

2.3. Versturen token response door DVA (16)

{
	"event": {
		"type": "send_token_response",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:17:55.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
		"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"status": 200
	}
}

2.4. Ontvangen token response door DVP (17)

{
	"event": {
		"type": "receive_token_response",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:17:55.518+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71" 
	},
	"response": {
		"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"status": 200
	}
}

3. Resource

3.1. Versturen resource request door DVP (18)

{
	"event": {
		"type": "send_resource_request",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:17:59.523+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"method": "get",
		"client_id": "mijn.pgo.nl",
		"server_id": "api.as.dva.nl",
		"service_id": "49",
		"uri": "https://api.rs.dva.nl/2.0.0/49",
		"provider_id": "een.huisarts@medmij"
    }
}

3.2. Ontvangen resource request door DVA (19)

{
	"event": {
		"type": "receive_resource_request",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:18:21.718+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"request": {
		"id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"method": "get",
		"client_id": "mijn.pgo.nl",
		"server_id": "api.as.dva.nl",
		"service_id": "49",
		"uri": "https://api.as.dva.nl/2.0.0/authorize",
		"provider_id": "een.huisarts@medmij"
    }
}

3.3. Uitvoeren late beschikbaarheidstoets (20)

Deze logregel is optioneel. De beschikbaarheidstoets kan ook op het authorization-endpoint worden uitgevoerd en is daarom niet verplicht bij autorisatie. Daarnaast is niet voorgeschreven hoe de beschikbaarheidstoets uitgevoerd moet worden. Misschien is alleen het resultaat van de beschikbaarheidstoets en de reden van falen belangrijk om te loggen.

3.4. Resultaat late beschikbaarheidstoets (21)

Deze logregel is optioneel. De beschikbaarheidstoets kan ook op het authorization-endpoint worden uitgevoerd en is daarom niet verplicht bij autorisatie.

{
	"event": {
		"type": "result_availability_check",
		"location": "api.as.dva.nl", 
	    "datetime": "2023-03-28T22:18:58.518+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73", 
	    "trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
      }
}

3.5. Start verzamelen gegevens (22)

Deze logregel is optioneel en kan meerdere keren terugkomen per trace, omdat vanuit een resource-request meerdere verzoeken naar het bronsysteem kunnen worden gestuurd. Deze regel wordt alleen vastgelegd op het moment dat er sprake is van een request-reply architectuur.

3.6. Resultaat verzamelde gegevens (23)

Deze logregel kan meerdere keren terugkomen per trace, omdat vanuit een resource-request meerdere verzoeken naar het bronsysteem kunnen worden gestuurd.

{
	"event": {
		"type": "result_gathering_information",
		"location": "api.as.dva.nl", 
	    "datetime": "2023-03-28T22:16:59.768+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73", 
	    "trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
      }
}

3.7. Versturen Resource response (24)

{
	"event": {
		"type": "send_resource_response",
		"location": "api.as.dva.nl",
		"datetime": "2023-03-28T22:20:23.236+01:00",
		"session_id": "d7382884-865e-4185-8347-2c4922d8ef73",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
		"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"status": 200
	}
}

3.8. Ontvangen response (25)

{
	"event": {
		"type": "receive_resource_response",
		"location": "mijn.pgo.nl",
		"datetime": "2023-03-28T22:20:25.006+01:00",
		"session_id": "8f57f91c-c4f3-4fd1-8463-c4212de3fac0",
		"trace_id": "79dc6181-6239-4fdd-ad98-594312aeac71"
	},
	"response": {
		"request_id": "8b5d6cb2-a2c0-4893-bd97-240621c3e488",
		"status": 200
	}
}

4. Wat te implementeren?

4.1. X-Request-ID

Op dit moment maakt MedMij gebruik van MedMij-Request-ID bij het loggen van resource requests. Aan het loggen van het authorization request worden geen eisen gesteld. Dit moet veranderen. Dan kan er gekozen worden om ook hier gebruik te gaan maken van MedMij-Request-ID, of we vallen terug op een internationaal meer gebruikte variant X-Request-ID. Eerder is er al onderzoek naar gedaan, destijds werd gekozen voor een aan AORTA gelijke methode. Omdat we ook een trace willen gebruiken en hiervoor ook een internationaal meer gebruikte variant voor is, wordt vanaf nu gekozen voor X-Request-ID.

4.2. X-Correlation-ID

Er is binnen MedMij nog geen mogelijkheid tot het volgen van een geheel proces. Hiervoor is het gewenst een zogenoemd trace-id te gebruiken. Binnen HTTP wordt veel gebruikgemaakt van de header X-Correlation-ID. Daarom gaan we deze ook binnen MedMij gebruiken.