...
Info |
---|
Disclaimer: Deze pagina’s worden regelmatig bijgewerkt zodat ze altijd de meeste recente informatie bevatten. Aarzel niet om feedback te geven mochten er aanpassingen nodig zijn. |
Probleemstelling
Bij een aanvragen-integratie in Mijn Burgerprofiel wordt een iframe getoond met daarin een aanvraag die gehost wordt door het extern loket. Afhankelijk van de vereisten voor het formulier, zijn cookies mogelijk nodig (om een gebruikerssessie bij te houden, persistentie aan te bieden binnen het formulier, …). De afgelopen jaren hebben browsers echter steeds meer beperkingen gelegd op het gebruik van cookies, zeker in “Third Party” context (wanneer cookies bijgehouden worden voor een domein dat niet hetzelfde is als de zichtbare website).
...
Voor een gedetailleerd overzicht van wat Third Party Cookies zijn en hoe verschillende browsers ermee omgaan, zie https://web.archive.org/web/20220817000041/https://clearcode.cc/blog/browsers-first-third-party-cookies/ .
Oplossing met voorkeur: First Party Cookies ahv domein alias
De meeste beperkingen zijn niet van toepassing wanneer cookies gezet worden op hetzelfde domein als de actieve website. Subdomeinen vallen onder dezelfde regels.
...
Info |
---|
Als onderdeel van uw aansluitingsdossier zal deze alias eenmalig vastgelegd worden. De loketapplicatie die het aanvraagformulier host, moet dan ook correct omgaan met de afgesproken alias. |
Alternatieve oplossing: Third-party cookie API endpoint
Als bovenstaande aanpak geen optie is (vanwege technische beperkingen), dan bieden we alsnog een alternatief aan: door specifieke API endpoints te voorzien (en mee te geven in Forms API), kunnen we in Mijn Burgerprofiel eerst kijken of cookies op uw domein gezet kunnen worden. Als dat niet mogelijk is (omdat de browser Third Party Cookies blokkeert) tonen we in Mijn Burgerprofiel een relevante foutboodschap, en verwijzen de burger door naar het externe loket (de fallback link van de aanvraag):
...
Technische invulling
Het loket voorziet (als onderdeel van de forms API die sowieso voorzien moet worden) een endpoint /api/v1/third-party-cookies
. Het endpoint moet publiek zijn (want zal geen Authorization headers binnenkrijgen).
...
kijken of de aanvraag een
thirdPartyCookieApi
link heefteen POST doen naar het geconfigureerde endpoint
een GET doen naar het geconfigureerde endpoint
de relevante UI tonen aan de gebruiker
de foutboodschap met doorverwijzing indien er een endpoint is geconfigureerd in stap 1, en stap 2 of 3 een fout geven
de geconfigureerde aanvraag indien er geen endpoint is geconfigureerd, of stap 2 en 3 zonder problemen werden uitgevoerd
API definitie van te implementeren endpoint
Swagger integration | ||
---|---|---|
| ||
{ "openapi": "3.0.2", "info": { "title": "Aanvraagmodule - Third Party Cookie endpoint", "version": "1.0" }, "components": { "schemas": { "ServerError": { "type": "string" } } }, "servers": [ { "description": "Form provider", "url": "https://formulier.vlaanderen.be" } ], "paths": { "/auth/v1/third-party-cookies": { "post": { "responses": { "200": { "description": "Request is geregistreerd en cookie wordt ahv response header gezet", "headers": { "Set-Cookie": { "description": "Een cookie naam en waarde die in GET request gecontroleerd kunnen worden. De cookie moet SameSite=None directive hebben, en minstens 30 seconden geldig zijn.", "schema": { "type": "string" }, "example": "cookie-available=true; SameSite=None; httponly; secure" }, } }, "500": { "description": "Onverwacht probleem opgetreden in de applicatie bij het aanmaken van cookie" } } }, "get": { "responses": { "200": { "description": "Cookie dat gezet is door POST is aanwezig in request", }, "404": { "description": "Cookie dat gezet is door POST is niet aanwezig in request (dus browser blokkeert het opslaan van cookies voor dit domein)" } } } } } } |