2.1 KiB
2.1 KiB
Business Logic Model — Unit 02: Identity & RBAC
Dit document beschrijft de processen en datastromen voor authenticatie en autorisatie.
1. Authenticatie Flow (JWT)
sequenceDiagram
participant Client
participant AuthController
participant AuthService
participant UserManager
participant Database
Client->>AuthController: Login(Email, Password)
AuthController->>AuthService: AuthenticateAsync(Email, Password)
AuthService->>UserManager: FindByEmailAsync(Email)
UserManager->>Database: Get User
Database-->>UserManager: User Data
UserManager->>UserManager: CheckPasswordAsync(User, Password)
AuthService->>AuthService: GenerateTokens(User)
AuthService->>Database: Save RefreshToken
AuthService-->>AuthController: AccessToken, RefreshToken
AuthController-->>Client: 200 OK (Tokens)
2. Uitnodigingsproces
graph TD
A[Admin/Owner] -->|Create Invitation| B(InvitationService)
B -->|Generate Token| C(InvitationToken)
C -->|Save to DB| D[(Database)]
B -->|Send Email| E[User]
E -->|Click Link| F[Setup Page]
F -->|Submit Password + Token| G(SetupController)
G -->|Validate Token| B
B -->|Create Account| H(UserManager)
H -->|Activate User| D
3. Hiërarchische Autorisatie Logic
De autorisatie wordt afgehandeld via ASP.NET Core AuthorizationPolicies.
- Policy:
RequireLowerRole:- Haalt de rol van de huidige gebruiker (X) en de doelgebruiker (Y) op.
- Vergelijkt de numerieke waarden van de rollen.
- Slaagt alleen als
RoleValue(X) > RoleValue(Y)(ofX == YenX == Owner).
4. Token Refresh Logic
- Client stuurt
Expired Access Token+Refresh Token. - Systeem controleert of
Refresh Tokenbestaat in de database en niet verlopen is. - Systeem controleert of
Refresh Tokenal eerder is gebruikt (Re-use detection). - Indien geldig:
- Genereer nieuw
Access Token. - Genereer nieuw
Refresh Token(Rotation). - Verwijder/Invalideer het oude
Refresh Token.
- Genereer nieuw
- Indien ongeldig of re-use:
- Trek alle tokens van de gebruiker in.
- Retourneer
401 Unauthorized.