WIP Gedetailleerde procesbeschrijvingen
Status: DRAFT
Actoren
- Burger
- Bronorganisatie
- Stelselbeheerder
- App manager
Processen
Voorbereiding APP MANAGER
- App manager creëert private/public keypair (2048bits RSA) TODO
- App manager installeert Blauwe Knop componenten
- App manager installeert DigiD aansluiting
- App manager registreert zich bij de Stelselbeheerder
- Stelselbeheerder neemt App manager incl public key op in het stelselschema
Voorbereiding BRONORGANISATIE
- Bronorganisatie installeert componenten
- Bronorganisatie genereert private/public keypair (via management-ui, implementatie)
- Bronorganisatie meldt zich aan bij stelselbeheerder implementatie
- Stelselbeheerder registreert Bronorganisatie incl naam, discovery URL, public key, en welke documenttypen de bronorganisatie ondersteunt implementatie
STELSELBEHEER
- Stelselbeheerder accepteert bronorganisatie (dit kan via de management-ui) implementatie
- Stelselbeheerder publiceert schema met (organisaties, app managers)
ONBOARDING
- Gebruiker installeert App
- Gebruiker (App) genereert een te gebruiken handtekening
- Gebruiker bekijkt onboarding/uitleg
- Gebruiker start wizard
VERZOEK DOEN
-
ORGANISATIES SELECTEREN - verzoek samenstellen
- Gebruiker (App) haalt SCHEME op
- Gebruiker (App) bevat hardcoded de documenttypen waar het om draait
- versie 1: informatie over financiële verplichtingen: FINANCIAL_CLAIMS_INFORMATION_REQUEST
- Gebruiker (App) bepaalt welke organisaties in het schema dit documenttype kunnen leveren
- Gebruiker (App) toont lijst van deze organisaties en de mogelijkheid om al die organisaties te bevragen
- Gebruiker maakt keuze uit organisaties
- App slaat zowel de gekozen instellingen (geselecteerde organisaties) als de resulterende DocumentBundel lokaal op, zodat deze kan worden hergebruikt
-
VERZOEK BEKIJKEN
- App toont te geconfigureerde verzoek
- Welke organisaties
- Welk verzoek (verzoek om schuldinformatie)
- Gebruiker bevestigt dat het verzoek is zoals gewenst
- App toont te geconfigureerde verzoek
-
HANDTEKENING LEGALISEREN
- App geeft aan dat verzoek ondertekend moet worden en dat daarvoor een gelegaliseerde handtekening vereist is
- Gebruiker kiest legalisatiemethode
- Gebruiker legaliseert handtekening (zie hieronder)
-
OPTIE A: HANDTEKENING LEGALISEREN MET App manager (implementatiekeuze: DigiD)
- [OPTIONAL: per org keys] Gebruiker (App) genereert public/private keypair voor communicatie met App manager
- Gebruiker (App) stuurt legalisatieverzoek naar app manager met bewijs bezit private key
- Gebruiker (App) redirect naar App manager website
- Gebruiker logt in bij App manager
- App manager creëert legaliseert handtekening van de burger, plus diens BSN met de handtekening van de app manager
- App manager creëert token en encrypt met eigen private key + public key Gebruiker
- App manager redirect naar App met encrypted token
- Gebruiker (App) gebruikt token om encrypted package op te halen
- De Gebruiker (App) decrypt het package 1x (dmv private key gebruiker)
- De Gebruiker (App) controleert de ondertekening door de App manager
-
OPTIE B: VERZOEK ONDERTEKENEN MET Digitale Identiteit (implementatiekeuze: IRMA)
- Gebruiker (App) stelt legalisatieverzoek op (te legaliseren handtekening: de bij het installeren van de app gegenereerde eigen handtekening)
- Gebruiker (App) start ondertekensessie via inter-app communicatie
- De DI creëert handtekening met BSN op de te legaliseren handtekening
- De gelegaliseerde handtekening wordt via inter-app communicatie aan de Gebruiker (App) geleverd
-
VERZOEK OPSTELLEN VOOR BRONORGANISATIE (DIT GEBEURT EENMALIG VOOR ELKE BRONORGANISATIE DIE GEKOZEN IS)
- Opstellen verzoek
- Gebruiker (App) stelt voor de betreffende organisatie een document op met verzoek om het gekozen documenttype
- versie 1: documenttype: FINANCIAL_CLAIMS_INFORMATION_REQUEST
- Gebruiker (App) ondertekent het document met de gekozen handtekening
- Gebruiker (App) encrypt het document en de gebruikte gelegaliseerde handtekening met de public key van de betreffende bronorganisatie
- Gebruiker (App) stelt voor de betreffende organisatie een document op met verzoek om het gekozen documenttype
- Opstellen verzoek
-
VERBINDING MAKEN MET EEN BRONORGANISATIE
- Verbinding maken met een bronorganisatie (alleen nodig als er nog geen
session token is voor die organisatie)
- [OPTIONAL: per org keys] De Gebruiker (App) genereert public/private keypair voor communicatie met de bronorganisatie
- [OPTIONAL: per org keys] De Gebruiker stuurt een connectieverzoek inclusief public key aan de bronorganisatie
- De bronorganisatie reageert met een challenge-token, encrypted met de private key van de organization (corresponderend met public key in het scheme)
- De Gebruiker (App) decrypt het challenge token met de bijbehorende public key uit het scheme
- De Gebruiker (App) encrypt het challenge token met de eigen private key die gegenereerd is bij het installeren van de app
- Gebruiker (App) stuurt de encrypted challenge naar de bronorganisatie
- Bronorganisatie decrypt de challenge en checkt deze. Indien juist slaat de bronorganisatie de public key van de Gebruiker (App) op, samen met een session token
- De bronorganisatie retourneert het session token naar de Gebruiker (App)
- De Gebruiker (App) slaat het session-token op in relatie tot de bronorganisatie en het verzoek
- Verbinding maken met een bronorganisatie (alleen nodig als er nog geen
session token is voor die organisatie)
-
VERZOEK INDIENEN BIJ EEN BRONORGANISATIE
- Insturen ondertekende DocumentBundel+BSN[package]
- [OPTIONAL: De Gebruiker (App) vraagt een challenge token op bij de Bronorganisatie]
- De Gebruiker (App) encrypt het Document[+challenge token] +GelegaliseerdeHandtekening met de private key van de gebruiker [OPTIONAL: per org keys: voor die organisatie]
- De Gebruiker (App) encrypt het betreffende document met de public key van de betreffende bronorganisatie
- De Gebruiker (App) stuurt dit resultaat naar de Bronorganisatie samen met de session token
- Accepteren schuldinformatie-verzoek-registratie [TODO: financial-claims-configuration-request
of financial-claims-registration-request]
- De Bronorganisatie decrypt het ontvangen bericht met diens eigen private key
- De Bronorganisatie controleert de ondertekening met de public key behorende bij de gebruiker (icm de session token)
- De Bronorganisatie controleert de challengetoken
- De Bronorganisatie controleert het documenttype in het Document, en of dat ondersteund wordt
- De Bronorganisatie controleert de ondertekening van het
Document
- Optie A: Klopt de handtekening van de App manager? Wat is het BSN?
- Optie B: Klopt de handtekening met Digitale Identiteit? Wat is het BSN?
- De Bronorganisatie slaat het BSN op samen met het Document
- De Bronorganisatie genereert een financial-claims-configuration-request ID (als het ware een referentie naar dit specifieke verzoek, een soort casenummer)
- De Bronorganisatie retourneert het financial-claims-configuration-request ID naar de Gebruiker (App)
- De Gebruiker (App) slaat het financial-claims-configuration-request ID op in relatie tot de bronorganisatie en het verzoek
- Insturen ondertekende DocumentBundel+BSN[package]
VORDERINGENOVERZICHT BEKIJKEN
- Gebruiker opent Vorderingenoverzicht
- Openen of pull to refresh triggert het ophalen/verversen
- VERBINDING MAKEN MET EEN BRONORGANISATIE (zie hierboven voor details)
- App haalt schuldinformatie op bij alle geselecteerde bronorganisaties
- De Gebruiker (App) zoekt het financial-claims-configuration-request ID op voor de betreffende organisatie
- De Gebruiker (App) ondertekent het session-token en de financial-claims-configuration ID met de private key van de gebruiker [OPTIONAL: per org keys: behorende bij die organisatie].
- De Gebruiker (App) encrypt het voorgaande met de public key van de betreffende bronorganisatie.
- Gebruiker (App) stuurt het resultaat naar de bronorganisatie
- Bronorganisatie verwerkt verzoek om actuele schuldinformatie
- Bronorganisatie decrypt het bericht met diens private key
- De bronorganisatie controleert het financial-claims-configuration ID icm de public key van de gebruiker
- De bronorganisatie controleert de handtekening op het document (dmv de public key opgeslagen bij de financial-claims-configuration ID)
- De bronorganisatie zoekt de schuldinformatie bij elkaar voor het betreffende BSN
- De bronorganisatie stelt een FINANCIAL_CLAIMS_INFORMATION_DOCUMENT document op.
- De bronorganisatie ondertekent dat document met de private key van de bronorganisatie.
- De bronorganisatie encrypt het resultaat uit de vorige stap met de public key van de gebruiker(app).
- De bronorganisatie retourneert het encrypted resultaat naar de Gebruiker (App)
- De Gebruiker (App) decrypt de ontvangen gegevens met diens private key [OPTIONAL: per org keys] voor die organisatie.]
- De Gebruiker (App) valideert de handtekening op het resultaat mbv de public key van de bronorganisatie
- De Gebruiker (App) slaat het document lokaal op
- Schuldinformatie wordt gepresenteerd per organisatie
- De Gebruiker (App) leest de Documenttype 1 voor alle organisaties en geeft deze weer.
- TBD, voor nu een lijst per organisatie