"De eisen en wensen zijn vertaald naar een passend, eenduidig en
volledig ontwerp."
"De gemaakte keuzes in het ontwerp zijn onderbouwd met steekhoudende
argumenten, waarbij rekening is gehouden met haalbaarheid, privacy en security."
Vertaling van functionele
eisen
Onderstaand ontwerp vertaalt de
functionele eisen en wensen van het RBAC-systeem naar concrete ontwerpkeuzes binnen de
bestaande Print Manager applicatie. Per eis is aangegeven welke ontwerpkeuze is gemaakt,
waarom hiervoor gekozen is en waar dit terug te vinden is binnen het ontwerp of de
implementatie.
| Eis / wens |
Ontwerpkeuze |
Onderbouwing |
Terug te vinden in |
| Verschillende typen gebruikers ondersteunen |
Role-entiteit + UserRole koppeltabel |
Door rollen los te modelleren kunnen gebruikers verschillende rechten krijgen
zonder duplicatie van permissies. |
ERD – Role / UserRole
|
| Administrator meer rechten dan Operator |
Rollen bevatten verschillende sets permissies |
Door permissies per rol te definiëren kan hiërarchie in rechten worden
aangebracht. |
ERD – RolePermission |
| Toegangsrechten groeperen in rollen |
RolePermission koppeltabel |
Hiermee kunnen meerdere permissies aan één rol worden gekoppeld, wat beheer
vereenvoudigt. |
ERD – RolePermission |
| Rol bevat meerdere permissies |
Many-to-many relatie via koppeltabel |
Dit voorkomt redundantie en maakt uitbreiding mogelijk. |
ERD |
| Gebruiker aan meerdere rollen koppelen |
UserRole koppeltabel |
Hiermee kan één gebruiker meerdere functies hebben. |
ERD |
| Directe permissies mogelijk |
UserPermission koppeltabel |
Hiermee kunnen uitzonderingen worden ondersteund zonder rolstructuur te
wijzigen. |
ERD |
| Controle per actie |
JWT met permissieclaims |
Permissies worden na login vastgelegd zodat elke actie gecontroleerd kan worden.
|
Activiteitendiagram – API
flow |
| JWT bevat permissies als claims |
Claims in SecurityTokenDescriptor |
Hierdoor kan server-side gecontroleerd worden zonder extra databasequery per
request. |
Klassendiagram |
| Controle bij elke API-aanroep |
[Authorize(Roles="...")] attributen |
Autorisatie wordt afgedwongen op endpointniveau. |
Activiteitendiagram |
| Actie blokkeren bij ontbrekend recht |
Standaard server-side afwijzing |
Dit voorkomt dat ongeautoriseerde acties uitgevoerd kunnen worden. |
Activiteitendiagram |
| Onderdelen niet zichtbaar zonder toestemming |
AuthorizeView / custom checks |
Voorkomt dat gebruikers functies zien waarvoor zij geen rechten hebben. |
UI ontwerp |
| Functionaliteiten zonder rechten niet klikbaar |
Conditional rendering + disabled states |
Gebruikers kunnen functionaliteiten zonder permissies niet gebruiken of
activeren. |
UI ontwerp |
| Beheer van rollen en permissies via gebruikersinterface |
Blazor/Radzen beheerpagina’s |
Administrators kunnen rollen en permissies beheren zonder codewijzigingen. |
UI ontwerp |
| Rechten opnieuw berekenen bij tokenvernieuwing |
JWT regeneratie tijdens authenticatieflow |
Wijzigingen in rollen of permissies worden direct actief na vernieuwen van het
token. |
Activiteitendiagram – API
flow |
Vertaling van niet-functionele
eisen
Onderstaand ontwerp vertaalt de
niet-functionele eisen en wensen naar concrete ontwerpkeuzes binnen de bestaande Print
Manager applicatie.
| Eis / wens |
Ontwerpkeuze |
Onderbouwing |
Terug te vinden in |
| Toegang standaard geblokkeerd |
Deny-by-default principe |
Alleen expliciet toegekende permissies geven toegang. |
UI ontwerp &
Activiteitendiagram |
| Systeem moet veilig zijn |
Server-side autorisatie + JWT signing |
Voorkomt manipulatie via client-side aanpassingen. |
Activiteitendiagram |
| Autorisatie server-side |
Gebruik van middleware + attributen |
Veiligheid is niet afhankelijk van UI. |
Activiteitendiagram |
| Wachtwoorden worden niet leesbaar opgeslagen |
Password hashing in authenticatieservice |
Voorkomt opslag van gevoelige gegevens in platte tekst. |
Authenticatieflow |
| Wachtwoorden veilig hashen met PBKDF2 |
PBKDF2 password hashing |
Hierdoor worden wachtwoorden veilig opgeslagen volgens gangbare
beveiligingsrichtlijnen. |
Authenticatieflow |
| Aansluiten op bestaande architectuur |
Integratie binnen Database-, Core- en API-laag |
Voorkomt extra complexiteit en houdt systeem onderhoudbaar. |
Klassendiagram |
| Gebruik van Dependency Injection |
Services registreren via DI container |
Sluit aan op de bestaande architectuur en maakt componenten onderhoudbaar en
testbaar. |
Klassendiagram |
| Onderhoudbaar en uitbreidbaar |
Entiteiten gescheiden gemodelleerd |
Nieuwe rollen/permissies kunnen worden toegevoegd zonder structuurwijziging.
|
ERD |
| Schaalbaar voor meerdere klanten |
Generieke rol- en permissiestructuur |
Geen hardcoded rechten; systeem is klantonafhankelijk. |
ERD |
| Frontend in Blazor |
UI gebouwd in Blazor + Radzen |
Consistent met bestaande applicatie. |
UI ontwerp |
| Geen externe afhankelijkheden introduceren |
RBAC geïntegreerd binnen bestaande applicatie |
Hierdoor blijft het systeem geschikt voor on-premise installaties. |
Architectuuroverzicht
|
| Beveiligingscontroles niet alleen via UI |
Server-side validatie van permissies |
Voorkomt toegang via directe API-aanroepen zonder permissies. |
Activiteitendiagram |
Bestaande Architectuur
Integratie
Het RBAC-systeem is geïntegreerd binnen de bestaande drie-lagenarchitectuur van de Print
Manager applicatie. De database-laag bevat de entiteiten en koppeltabellen voor rollen en
permissies. Binnen de Core-laag bevinden zich de businesslogica en services voor
autorisatie en tokenverwerking. De API-laag checkt permissies via de JWT claims en
autorisatie-attributen. De gebruikersinterface is gerealiseerd in Blazor en Radzen en
toont functionaliteiten op basis van de rechten van de gebruiker.
Onderbouwing en Ontwerpkeuzes
Het ontwerp sluit aan op de Print Manager architectuur en gebruikt bestaande
technieken zoals Blazor, JWT en Dependency Injection. Hierdoor kon het
RBAC-systeem gerealiseerd worden zonder een nieuwe structuur te maken. Dit maakte
de implementatie en uitvoering technisch haalbaar binnen de tijd en bestaande
infrastructuur.
In het ontwerp is rekening gehouden met privacy door gebruikersgegevens en
wachtwoorden veilig te verwerken. Wachtwoorden worden niet als normale tekst
opgeslagen maar gehasht met PBKDF2. Daarnaast worden alleen noodzakelijke rechten
opgeslagen binnen JWT claims zodat geen onnodige persoonsgegevens verwerkt worden.
Security speelde een belangrijke rol binnen het ontwerp. Autorisatie wordt
server-side afgedwongen zodat beveiliging niet afhankelijk is van de UI.
Permissies worden gecontroleerd via JWT claims en beveiligde API endpoints.
Daarnaast geldt een deny-by-default principe waarbij gebruikers standaard geen
toegang hebben tenzij rechten zijn toegekend.
Relatie met eisen en wensen
De ontwerpkeuzes zijn direct gebaseerd op de eerder opgestelde functionele en
niet-functionele eisen en wensen. Door gebruik te maken van rollen, permissies,
koppeltabellen, JWT claims en server-side autorisatie sluit het ontwerp aan op de
eisen rondom beveiliging, beheerbaarheid, uitbreidbaarheid en gebruikersgemak.
Conclusie
Door de combinatie van databaseontwerp, JWT autorisatie, server-side beveiliging en UI
controles dekt het ontwerp alle benodigde onderdelen van het RBAC-systeem. Het ontwerp
sluit aan op de bestaande architectuur van de applicatie en ondersteunt onderhoudbaarheid,
uitbreidbaarheid en veilige autorisatie.
"Er is gebruikgemaakt van relevante of toepasselijke schematechnieken
(bijvoorbeeld een activiteitendiagram, een klassendiagram, een ERD of een usecasediagram)."
Schematechnieken RBAC Systeem
Hieronder vind je de schematechnieken die zijn
gebruikt om de datastructuren en processen van het RBAC-systeem te modelleren. Klik op een
afbeelding voor een vergrootte weergave of download het bestand.
Entity-Relationship Diagram (ERD)
Entity-Relationship Diagram met de tabellen en relaties voor rollen en permissies.
Klassendiagram
Klassendiagram van de RBAC services, controller en modellen binnen de Core- en API-laag.
Activiteitendiagram (Swimlane)
Swimlane activiteitendiagram van de login- en autorisatieflow met JWT tokenclaims.
Figma UI-ontwerpen
Hieronder vind je de interactieve UI-ontwerpen
gemaakt in Figma ter voorbereiding op het beheer en de werking van het RBAC-systeem.
Figma - CRUD beheerpagina
Ontwerp van de beheerdersinterface voor het aanmaken, wijzigen en verwijderen van rollen
en permissies.
Figma - Conditional rendering
Ontwerp voor het verbergen of uitschakelen van specifieke acties of menu-opties op basis
van rechten.
Figma - Toegang geweigerd
Ontwerp van de foutpagina of melding wanneer een gebruiker een niet-geautoriseerde actie
probeert uit te voeren.