# Auth Service Design — Unit 02: Identity & RBAC Dit document beschrijft de `IAuthService` die verantwoordelijk is voor token-management. ## 1. Interface definitie ```csharp public interface IAuthService { Task AuthenticateAsync(string email, string password); Task RefreshTokenAsync(string accessToken, string refreshToken); Task RevokeTokenAsync(string refreshToken); } ``` ## 2. JWT Configuratie - **Signing Key**: Wordt uit de environment variable `JWT_SIGNING_KEY` gelezen. - **Issuer/Audience**: Worden geconfigureerd in `appsettings.json`. - **Claims**: - `sub`: UserId. - `email`: Gebruikers e-mail. - `role`: Gebruikers rol (bijv. "Administrator"). - `exp`: Expiration time. ## 3. Refresh Token Rotation Logic Bij een refresh request: 1. Valideer de `refreshToken` string tegen de database. 2. Controleer op Re-use: Indien de `IsUsed` vlag al op `true` staat, trek dan **alle** tokens van die gebruiker in (NFR-ID-SEC-03). 3. Indien geldig: - Markeer huidig token als `IsUsed = true`. - Genereer een nieuw cryptografisch veilig geheim (32 bytes Base64). - Sla het nieuwe token op met een nieuwe `ExpiryDate`. - Retourneer het nieuwe `AccessToken` en `RefreshToken`.