Closed hvdijk-p5 closed 4 months ago
@hvdijk-p5 zou jij e.e.a. kunnen toelichten a.s. maandag? Dan kunnen samen bepalen hoe we dit gaan aanpakken. Ik heb een vergaderverzoek gestuurd.
zie ook #855 moeten levenloos geboren kinderen worden opgenomen in het antwoord
Zoeken (door niet-gemeente) en in fields vragen om gegevens waarvoor de gebruiker niet geautoriseerd is --> foutmelding
Zoeken (door gemeente) vindt binnengemeentelijk persoon en in fields vragen om gegevens waarvoor de gebruiker niet buitengemeentelijk geautoriseerd is --> kan niet door beperken zoekresultaat
Zoeken (door gemeente) vindt buitengemeentelijke (en evt. ook binnengemeentelijke) personen en in fields vragen om gegevens waarvoor de gebruiker niet buitengemeentelijk geautoriseerd is --> kan niet meer door beperken zoekresultaat
Raadplegen op bsn binnengemeentelijk persoon en in fields vragen om gegevens waarvoor de gebruiker niet buitengemeentelijk geautoriseerd is --> leveren
Raadplegen op bsn buitengemeentelijk persoon en in fields vragen om gegevens waarvoor de gebruiker niet buitengemeentelijk geautoriseerd is --> foutmelding
Zoeken op parameter wanneer je niet voor het gegeven geautoriseerd bent. Bijvoorbeeld niet geautoriseerd voor geboortedatum en zoeken met geboortedatum --> foutmelding
Bij zoeken beperkte subset van resource als response: alle zoekparameters + leeftijd + indicatieOverleden + hele verblijfplaats + adellijkeTitelPredikaat + indicatieGeheim + opschorting + gezagsverhouding + inOnderzoek Reden voor deze gegevens:
Bij zoeken is de response al beperkte set, dus fields is niet required.
Toevoegen veld leeftijdWordtDitJaar voor geval alleen geboortejaar bekend is. leeftijdWordtDezeMaand voor geval geboortedag onbekend is en geboortemaand is deze maand. Hiermee wordt voorkomen dat een gebruiker alsnog autorisatie nodig heeft voor geboortedatum (en deze direct ophaalt) en daarmee dataminimalisatie verloren gaat.
Alleen toestaan van gebruik zoekparameters waarvoor de gebruiker geautoriseerd is voor het bijbehorende gegeven. Bijv. als gebruiker niet geautoriseerd is voor geboortedatum (in de response), mag ook niet worden gezocht op zoekparameter geboortedatum.
ik zoek ook uit of er deelnemers aan de pilot zijn die betreffende autorisatie niet hebben, zodat hier conditie voor moet worden ingebouwd:
@MelvLee @JohanBoer @CathyDingemanse hoe moet het beperken van de response eruit zien voor de POST? Krijg je dan bij gebruik van de burgerservicenummer parameter een andere response dan bij gebruik van de andere parameters?
@MelvLee @JohanBoer @CathyDingemanse hoe moet het beperken van de response eruit zien voor de POST? Krijg je dan bij gebruik van de burgerservicenummer parameter een andere response dan bij gebruik van de andere parameters?
Als je de Get-functionaliteit wilt "spiegelen" moeten we inderdaad een verschil onderkennen tussen de response bij het opvragen van een ingeschrevenPersoon op basis van "alleen" een Burgerservicenummer en de rersponse bij een combinatie van de andere parameters. Dat versterkt mijn vermoeden dat dit niet zo restfull is. Het kan toch niet zo zijn dat de response van dezelfde persoon er anders uitziet afhankelijk van de gebruikte parameter op hetzelfde endpoint ?
Klinkt fishy.
Zoals ook bij de PR aangegeven de vraag of we de verantwoordelijkheid hiervoor dan niet bij de consumer moeten leggen, danwel een andere resource (en dus endpoint) moeten definieren voor het zoeken van een ingeschrevenPersoonBeperkt.
Ik zou ervoor kiezen om twee request body te definieren. Eén voor zoeken en één voor raadplegen. Dit betekent ook dat je twee response krijgt. Of je moet zoals @JohanBoer aangeeft een ander endpoint gebruiken. Maar wat ik veel beter vind is om het raadplegen op basis van een id te laten gebeuren en niet met bsn. Dan is het niet nodig een POST variant voor raadplegen te maken. En help je hiermee de consumer om te voldoen aan de GDPR. Volgens mij moet je om aan de GDPR te voldoen minimaal PII (Personal Identifiable Information) gegevens encrypted opslaan in je database. Als het mogelijk is om een persoon met een uuid op te halen, hoeft een consumer geen bsn's meer in zijn database op te slaan.
Maar wat ik veel beter vind is om het raadplegen op basis van een id te laten gebeuren en niet met bsn.
we hebben besloten:
Bij deze weer een bombardement met wat vragen/opmerkingen die bij me boven zijn komen drijven. Als jullie weer toelichting nodig hebben dan zie ik jullie vast weer in een meeting. :-)
Fields geautoriseerd, anders foutmelding
Beperkte subset zoeken
Voorstel leeftijdWordtDitJaar/leeftijdWordtDezeMaand icm autorisatie geboortedatum
"ik zoek ook uit of er deelnemers aan de pilot zijn die betreffende autorisatie niet hebben, zodat hier conditie voor moet worden ingebouwd"
Gebruik POST
Nog wat extra zaken die nog ergens op mn lijstje stonden:
Ik heb de autorisaties van de deelnemers gecheckt, m.u.v. "pensioenfondsen" (weet nog niet welke dat zijn). Deze deelnemers hebben de volgende autorisatie-eigenschappen waar wel of niet iets mee moet:
- Adresbevragingen altijd toestaan wanneer verblijfplaats__gemeenteVanInschrijving gevuld is met gemeentecode (binnengemeentelijke bevraging)?
- Indicatie geheim filtering ook toepassen op binnengemeentelijk?
RvIG gaat niet over autorisaties voor binnengemeentelijke personen. Dus de API mag nooit een binnengemeentelijke persoon weigeren te leveren aan een gemeente. Elke gemeente heeft 100% autorisatie voor de eigen inwoners.
LO3 beschrijft dat voor filtering van geheime personen een mededeling wordt gedaan aan de afnemer dat de burger om geheimhouding heeft verzocht. Moet dit teruggekomen in het resultaat ipv 404/lege lijst? Bijv. alleen veld indicatie geheimhouding teruggeven?
Als een persoon met geheimhouding niet geleverd wordt bij raadplegen en gebruiker is hier niet voor geautoriseerd, moet dat een foutmelding geven (403). In de details bij de foutmelding kan dan staan dat de burger om geheimhouding heeft verzocht. Maar geen enkele deelnemer heeft 35.95.12=1, dus dit komt voorlopig niet voor.
Voorwaarderegels zijn ook onderdeel van de autorisaties in LO3. Implementatie hiervan is behoorlijk complex en wordt voorlopig nog niet gedaan. Maar verdient waarschijnlijk dus wel een plek in een feature over autorisaties.
Als je wilt weten welke voorwaardenregels 35.95.61 nu gelden, zie: https://publicaties.rvig.nl/dsresource?objectid=0f7e130e-8f51-496c-afdd-4d789aff4a50&type=pdf
Wellicht kan je voor de zekerheid inbouwen dat er een foutmelding (500 of 503?) komt wanneer een (toekomstige) deelnemer een niet-ondersteunde 35.95.61 of 35.95.71 voorwaarderegel heeft.
Maar wat ik veel beter vind is om het raadplegen op basis van een id te laten gebeuren en niet met bsn.
we hebben besloten:
- POST variant wordt aparte API (n zelfde repo)
- Bij POST variant komt ook GET /ingeschrevenpersonen/{uuid}
- Componenten (responses) in domain.yaml
- Melvin maakt pull request
@MelvLee heb je dit al gedaan? ik zie hier nog geen PR voor. Is het niet handig hier een apart issue van te maken?
eerste aanzet voor feature staat klaar in https://github.com/VNG-Realisatie/Haal-Centraal-BRP-bevragen/blob/autorisatie/features/autorisatie.feature
Hierin zijn nog (lang niet) alle vragen van dit issue beantwoord
Op moment van schrijven zijn voor de BRP Api's geen specificaties aanwezig die gaan over het toepassen van autorisaties zoals beschreven in LO3. Tot zover heb ik op eigen inzicht deze autorisaties geïmplementeerd, om tot de ontdekking te komen dat er meer functionaliteit is dan alleen de filtering van rubrieken waar een afnemer recht op heeft.
Ik denk dat het verstandig is als er een feature komt die de toepassing van autorisaties in wat meer details beschrijft. Mogelijk is het nodig dat de LO3 daarvoor nog eens doorgespit wordt. Als developer kan ik dan bij implementatie beter gegronde keuzes maken.
Omdat ik al een groot deel van de autorisaties heb geïmplementeerd, bij deze alvast de regels die ik heb toegepast. Misschien een goed startpunt voor een feature. En natuurlijk de grote vraag of het correct en compleet is.
Geblokkeerde pl
Er worden geen verstrekkingen gedaan van gegevens van geblokkeerde PL-en. (LO3 $3.1.9)
Toepassing autorisaties
Autorisaties worden toegepast als binnen- of buitengemeentelijk. Dit wordt bepaald op basis van een bij authenticatie meegegeven gemeentecode. Is de gemeente van inschrijving op de pl van een persoon gelijk aan de meegegeven gemeentecode, dan wordt de autorisatie als binnengemeentelijk toegepast op alleen deze persoon.
Voor beide geldt:
Voor binnengemeentelijk geldt:
Voor buitengemeentelijk geldt:
Vragen/aandachtspunten:
Kunnen jullie hier wat mee?