2.3 KiB
2.3 KiB
Business Rules — Unit 02: Identity & RBAC
Dit document beschrijft de validatieregels en logica voor identiteitsbeheer en autorisatie.
1. Hiërarchische Rollen (BR-ID-01)
- Hiërarchie: Owner (100) > Administrator (50) > User (10).
- Beperking: Een gebruiker kan alleen acties uitvoeren op gebruikers met een lagere rol in de hiërarchie.
- Uitzondering: Een Owner kan acties uitvoeren op andere Owners (bijv. de-activeren, mits niet de laatste Owner).
- Een Administrator kan een User beheren, maar geen andere Administrator of Owner.
- Rolverandering: Een gebruiker kan een andere gebruiker nooit een rol toekennen die hoger is dan zijn eigen rol.
2. Gebruikerscreatie & Uitnodiging (BR-ID-02)
- Geen Zelfregistratie: Het systeem staat geen publieke registratie toe.
- Uitnodigingsflow:
- Administrator/Owner maakt een uitnodiging aan (e-mail + rol).
- Systeem genereert een
InvitationTokenmet een beperkte geldigheidsduur (bijv. 24 uur). - Gebruiker moet via een specifiek endpoint (
POST /api/setup/complete-invitation) zijn wachtwoord instellen met dit token. - Na succesvolle instelling wordt het token ongeldig en het account geactiveerd.
3. Bootstrapping (BR-ID-03)
- Setup Endpoint: Bij een lege database is een eenmalig endpoint
POST /api/setup/initbeschikbaar. - Eerste Owner: Dit endpoint accepteert de gegevens voor de eerste Owner. Na succesvolle aanmaak wordt dit endpoint permanent geblokkeerd of verwijderd uit de routing.
4. Authenticatie & Sessies (BR-ID-04)
- Wachtwoord Hashen: Wachtwoorden moeten gehasht worden volgens de ASP.NET Core Identity standaard (PBKDF2 met HMAC-SHA256).
- Refresh Tokens:
- Refresh tokens zijn gekoppeld aan een specifieke gebruiker en client/apparaat.
- Refresh tokens kunnen maar één keer worden gebruikt (Rotation-principe).
- Bij gebruik van een oud refresh token worden alle actieve sessies van die gebruiker ongeldig gemaakt (beveiligingsmaatregel tegen token diefstal).
5. Module-specifieke Rechten (BR-ID-05)
- Fine-grained Access: Naast de globale rollen kunnen Beheerders specifieke rechten per module toekennen aan Users.
- Default: Zonder expliciete module-rechten heeft een User alleen leesrechten of basisrechten binnen een module (afhankelijk van de module-implementatie).