Authenticatie en toegangsbeheer Uitleg Verificatie vs. Autorisatie Authenticatie (verificatie): Bevestigen dat een gebruiker is wie hij beweert te zijn. Methoden zijn onder andere: Wachtwoorden: Gebruikers kiezen een geheim wachtwoord. Eenvoudig, maar vatbaar voor sterke/brute-force aanvallen als niet goed ingericht. Multi-factor authenticatie (MFA): Combineert iets dat je weet (wachtwoord) met iets dat je hebt (smartphone-app, SMS-code) of iets dat je bent (biometrie). Biometrie: Vingerafdruk, gezichtsherkenning of irisscan. Comfortabel, maar kan privacyrisico’s en false positives/negatives hebben. Autorisatie: Na succesvolle authenticatie bepaalt het systeem welke resources en acties een gebruiker mag uitvoeren. Veelgebruikte modellen: Role-Based Access Control (RBAC): Gebruikers krijgen rollen, en rollen krijgen permissies. Eenvoudig beheer bij groeiende aantallen rechten. Attribute-Based Access Control (ABAC): Beslissingen op basis van attributen (tijdstip, locatie, type apparaat) naast gebruikerskenmerken. Wachtwoordbeveiliging Sterkte eisen: Minimaal 8-12 tekens, combinatie van hoofdletters, cijfers en speciale tekens. Hashing en salting: Sla wachtwoorden nooit in platte tekst op. Gebruik een cryptografische hashfunctie (bijvoorbeeld bcrypt of Argon2) en voeg een unieke salt per wachtwoord toe om rainbow-table aanvallen te voorkomen. Opslag en beleid: Denk aan periodieke reset, lockout na mislukte pogingen en geblokkeerde accounts na verdachte activiteiten. MFA en moderne methoden SMS- of e-mailcodes: Gemakkelijk, maar kwetsbaar voor SIM-swaps of onderschepping. TOTP-apps (Time-based One-Time Password): Google Authenticator, Authy. Veiliger omdat codes lokaal gegenereerd worden. Push-notificaties: Gebruiksvriendelijk: een push naar de telefoon ter bevestiging. WebAuthn en FIDO2: Standaarden voor wachtwoordloze authenticatie met hardware tokens (zoals YubiKey) of biometrie. Autorisatiemodellen RBAC: Eenvoudig in te richten: definieer rollen zoals “student”, “docent” en “beheerder”. Wijs per rol rechten toe (bijv. lezen, schrijven, beheren). ABAC: Complexer, biedt fijnmazige controle. Voorbeeld: alleen docenten mogen lesmateriaal bewerken én alleen binnen werktijden. Least privilege: Geef gebruikers altijd de minimaal noodzakelijke rechten. Beveiligingspatronen en anti-patronen Fail-secure vs. fail-open: Bepaal hoe je systeem reageert bij fouten. Bij fail-secure is toegang geblokkeerd; bij fail-open blijft het open, wat risico’s geeft. Session management: Gebruik secure flags op cookies, stel een redelijke sessietimeout in en forceer herauthenticatie voor kritieke acties. Password reset flows: Vereisen kennisvragen of extra verificatie om social engineering te voorkomen. Praktijkvoorbeeld Stel je bouwt een onderwijsportal: Gebruiker logt in met username+password (bcrypt-hashing). Bij gevoelige data (cijfers, persoonlijke gegevens) is MFA verplicht via TOTP-app. De portal werkt met RBAC: Student: Bekijkt opdrachten en resultaten. Docent: Plaatst opdrachten, beoordeelt werk. Beheerder: Beheert gebruikers en systeeminstellingen. Session cookies bevatten een secure en HttpOnly-flag en verlopen na 30 minuten inactiviteit. Voor het resetten van wachtwoord krijgt de gebruiker een e-mail met een eenmalige link die na 10 minuten verloopt. Opdracht Authenticatie- en Autorisatieschema Schets een systeemarchitectuur: Teken de componenten (frontend, backend, database, externe providers) van een fictieve applicatie en beschrijf hoe authenticatie en autorisatie verlopen. Definieer rollen en rechten: Maak een tabel met ten minste drie rollen en hun permissies. Ontwerp de login flow: Beschrijf globaal hoe een gebruikerssessie tot stand komt, inclusief hashing, salting en MFA. Beschrijf beveiligingsmaatregelen: Licht toe hoe je wachtwoordbeleid, sessiemanagement en password reset veilig inricht. Evaluatie: Reflecteer op mogelijke zwakke punten en stel verbeteringen voor (bijvoorbeeld integratie van WebAuthn). Lever je schema en beschrijvingen in als PDF, met diagrammen en stappen voor de flows.