Building block view
GBO has one base and three channels. GBO Basis sits at every bronhouder
and opens the source in one standard way. The DvTP, EUDI and OOTS
channels each serve a different kind of consumer, and GBO Basis feeds all
three. This picture is the overview of the
Globaal Ontwerp,
with the state of gbo-demo v0.9.0 added.
Each block with a thick border is clickable and zooms in one level. The
levels go from this overview, to one page per block, to the
component catalog with the code.
flowchart LR
subgraph bronhouder["Bronhouder"]
direction LR
bron[("Government source<br/>BRP · BD · LVG · …")]
subgraph gbo["GBO Basis"]
direction TB
cfg("Source configuration<br/>source metadata, registry")
core("Generic source access<br/>FSC · GraphQL · PBAC")
tools("GBO tools<br/>translation layer<br/><i>design only</i>")
end
end
subgraph eudi["EUDI wallet channel"]
direction LR
asi("ASI provider<br/>verify / retrieve")
pubeaa("PuB-EAA provider<br/>attestation issuance")
qtsp["QTSP<br/>(QEAA)"]
wallet["EUDI wallet"]
end
subgraph oots["OOTS channel"]
direction LR
ootsa("OOTS adapter<br/>semantic mapping<br/><i>design only</i>")
ootsb["Basisinrichting OOTS"]
eu["EU government<br/>SDG portal"]
end
subgraph dvtp["DvTP channel"]
direction LR
tv("Consent facility<br/>portal + register")
pp["Pseudonymization facility<br/>BSNk PP"]
dv["Private<br/>service provider"]
end
burger["Citizen"]
cfg --- core
core --- tools
bron -- "source API (GraphQL)" --- gbo
gbo -- "GraphQL over FSC" --- asi & pubeaa & ootsa & dv
asi -- "verify · retrieve" --- qtsp
qtsp -- "OpenID4VCI" --- wallet
pubeaa -- "OpenID4VCI" --- wallet
ootsa -- "GraphQL" --- ootsb
ootsb -- "eDelivery/AS4" --- eu
gbo -. "consent status (PIP)" .- tv
tv -. "consent proof" .- dv
tv -- "at consent only" --- pp
wallet --- burger
eu --- burger
dv --- burger
%% GBO diagram palette: the same colors as the Globaal Ontwerp
classDef basis fill:#DCFCE7,stroke:#16A34A,color:#0F172A
classDef dvtp fill:#FEDCD8,stroke:#E28F80,color:#1E293B
classDef eudi fill:#FFEDD5,stroke:#EA580C,color:#0F172A
classDef source fill:#DDEBF7,stroke:#6F94B8,color:#1E293B
classDef ext fill:#F1EFE8,stroke:#5F5E5A,color:#444441
classDef store fill:#EDE9FE,stroke:#7C3AED,color:#1E1B4B
classDef mock fill:#F3F4F6,stroke:#9CA3AF,color:#374151,stroke-dasharray:4 3
classDef planned fill:#FFFFFF,stroke:#9CA3AF,color:#6B7280,stroke-dasharray:6 4
classDef zoom stroke-width:3px
class cfg,core basis
class tools planned
class asi,pubeaa eudi
class ootsa planned
class tv dvtp
class pp,dv,qtsp,wallet,ootsb,eu ext
class bron,burger source
class cfg,core,tv,pp,asi,pubeaa,ootsa zoom
style bronhouder fill:#FFFFFF,stroke:#6F94B8,stroke-dasharray:4 3
style gbo fill:#F4F5F7,stroke:#16A34A
style eudi fill:#F4F5F7,stroke:#D1D5DB
style oots fill:#F4F5F7,stroke:#D1D5DB
style dvtp fill:#F4F5F7,stroke:#D1D5DB
click core "gbo-basis/" "GBO Basis: generic source access"
click cfg "gbo-basis/source-configuration/" "Source configuration"
click tv "dvtp/" "DvTP channel"
click pp "../concepts/pseudonymization/" "Pseudonymization"
click pubeaa "eudi/pubeaa/" "PuB-EAA provider"
click asi "eudi/asi/" "ASI provider"
click ootsa "oots/" "OOTS channel"
Figure 1: GBO Basis feeds three channels. Thick border: click to zoom in.
Dashed: design only, not built in demo v0.9.0.
The blocks
The overview has seven GBO blocks. Five of them run in the demo:
| Block |
What it does |
In demo v0.9.0 |
Zoom in |
| Generic source access |
Opens a source over FSC with GraphQL. The PDP of the source decides on every request, field by field. |
Built |
GBO Basis |
| Source configuration |
The source describes its own services. GBO validates the description and activates it as a release. |
Built |
Source configuration |
| GBO tools |
Help a bronhouder that cannot offer GraphQL, through a translation layer. |
Design only |
ADR-0027 |
| Consent facility (toestemmingsvoorziening) |
The citizen gives, views and revokes consent. The register signs a consent proof for the consumer. |
Built, with a DigiD mock |
DvTP channel |
| PuB-EAA provider |
Issues an attestation from source data to the wallet of the citizen. |
Built on the nl-wallet stack |
PuB-EAA provider |
| ASI provider |
Lets a QTSP verify or retrieve an attribute at the source (eIDAS article 45e). |
Built, demo grade |
ASI provider |
| OOTS adapter |
Answers an EU evidence request with source data. |
Design only |
OOTS channel |
The pseudonymization facility BSNk PP (pseudonimiseervoorziening) and
the QTSP are not GBO components. GBO uses them. The demo runs a mock of BSNk PP.
How GBO Basis feeds every channel
Every channel reaches the source in the same way. A channel component
calls the source through its own FSC Outway. At the source, GBO Basis
decides and only then asks the source:
flowchart LR
subgraph ch["Channel (one of three)"]
direction TB
c1("Consumer backend<br/>DvTP")
c2("EUDI adapter<br/>PuB-EAA")
c3("ASIP<br/>ASI")
end
out["Outway of the caller"]
subgraph gb["GBO Basis at the source"]
direction LR
pep("FSC Inway<br/>PEP")
pdp("PDP<br/>policy per field")
gw("Source gateway")
end
api[("Source API")]
subgraph rec["Records"]
direction TB
adl[("ADL<br/>decision")]
ldv[("LDV<br/>processing")]
txl[("FSC txlog<br/>transport")]
end
c1 & c2 & c3 --> out
out -- "1 · mTLS + FSC token" --> pep
pep -- "2 · AuthZEN question" --> pdp
pdp -- "3 · allow or deny" --> pep
pep -- "4 · only after allow" --> gw
gw -- "5 · query" --> api
pdp -.-> adl
api -.-> ldv
pep -.-> txl
%% GBO diagram palette: the same colors as the Globaal Ontwerp
classDef basis fill:#DCFCE7,stroke:#16A34A,color:#0F172A
classDef dvtp fill:#FEDCD8,stroke:#E28F80,color:#1E293B
classDef eudi fill:#FFEDD5,stroke:#EA580C,color:#0F172A
classDef source fill:#DDEBF7,stroke:#6F94B8,color:#1E293B
classDef ext fill:#F1EFE8,stroke:#5F5E5A,color:#444441
classDef store fill:#EDE9FE,stroke:#7C3AED,color:#1E1B4B
classDef mock fill:#F3F4F6,stroke:#9CA3AF,color:#374151,stroke-dasharray:4 3
classDef planned fill:#FFFFFF,stroke:#9CA3AF,color:#6B7280,stroke-dasharray:6 4
classDef zoom stroke-width:3px
class c1 ext
class c2,c3 eudi
class out,pep,pdp,gw basis
class api source
class adl,ldv,txl store
class pep,pdp,gw zoom
style gb fill:#F4F5F7,stroke:#16A34A
click pep "gbo-basis/" "GBO Basis"
click pdp "gbo-basis/authorization/" "Authorization"
click gw "gbo-basis/source-access/" "Source access"
Figure 2: One path to the source for all channels. Dotted lines: the
three audit records.
The channels differ in the evidence that a request carries. The evidence
selects the rules that the PDP applies, and it decides how the source
learns who the citizen is:
| Channel |
Evidence in the request |
Rules |
How the source gets the citizen |
| DvTP |
A consent proof, signed by the consent register (toestemmingsregister) |
DVT0001, LVG0001 |
The source decrypts its own value from the proof |
| PuB-EAA issuance |
No consent proof: PID regime |
EUD0001, EUD0002 |
The adapter puts the BSN from the PID of the wallet in the query |
| ASI |
No consent proof: PID regime |
ASI0001 |
The ASIP puts the BSN from its access token in the query |
For the regime rule, see
ADR-0031. For the five rules,
see Authorization.
Two ways down
This view goes down by block: from a channel to its components. The
crosscutting concepts go down by theme.
The following table shows where each theme lives in the blocks:
| Theme |
GBO Basis |
DvTP |
PuB-EAA |
ASI |
| Authorization |
PEP, PDP and rules |
DVT0001, LVG0001 |
EUD0001, EUD0002 |
ASI0001, and an OAuth server of its own |
| Consent |
Status check per request |
Consent facility |
Not used |
Login is the approval |
| Pseudonymization |
Source gateway decrypts |
Values made at consent |
BSN from the PID |
BSN in the token |
| Source onboarding |
Source description, registry |
Not used |
eudi capability |
asi capability |
| Identity and trust |
FSC certificates, admission |
Admission register |
Certificate set per source |
QTSP register, seal |
| Logging and audit |
ADL, LDV, txlog |
Logbook of the consent facility |
Logbook of the adapter |
ADL and source logbook. The ASIP writes no LDV records |
Diagram legend
All diagrams in this TO use the colors of the Globaal Ontwerp:
flowchart LR
a("GBO Basis"):::basis
b("GBO DvTP component"):::dvtp
c("GBO EUDI or OOTS component"):::eudi
d[("Source or citizen")]:::source
e["External party or system"]:::ext
f[("Register, log, store")]:::store
g["Demo scaffolding or mock"]:::mock
h("Design only"):::planned
%% GBO diagram palette: the same colors as the Globaal Ontwerp
classDef basis fill:#DCFCE7,stroke:#16A34A,color:#0F172A
classDef dvtp fill:#FEDCD8,stroke:#E28F80,color:#1E293B
classDef eudi fill:#FFEDD5,stroke:#EA580C,color:#0F172A
classDef source fill:#DDEBF7,stroke:#6F94B8,color:#1E293B
classDef ext fill:#F1EFE8,stroke:#5F5E5A,color:#444441
classDef store fill:#EDE9FE,stroke:#7C3AED,color:#1E1B4B
classDef mock fill:#F3F4F6,stroke:#9CA3AF,color:#374151,stroke-dasharray:4 3
classDef planned fill:#FFFFFF,stroke:#9CA3AF,color:#6B7280,stroke-dasharray:6 4
classDef zoom stroke-width:3px
Figure 3: Diagram legend.
Traceability