De Verificatieservice is een op Quarkus gebaseerde microservice die verantwoordelijk is voor het genereren en verifiëren van verificatiecodes via e-mail.
- Verificatieaanvraag: Gebruikers kunnen een verificatiecode aanvragen voor een specifiek e-mailadres. Optioneel kunnen eigen NotifyNL API-sleutel en template-ID worden meegegeven.
- Verificatie: Validatie van de verstrekte code tegen een referentie-ID.
- E-mailnotificaties: Verificatiecodes worden verzonden via NotifyNL.
- Automatische opschoning: Verlopen en succesvol geverifieerde codes worden periodiek verplaatst naar statistieken en verwijderd uit de actieve tabel.
- Beheerdersstatistieken: Inzicht in de gemiddelde verificatietijd en het percentage niet-geverifieerde aanvragen.
- Cleanup Job Monitoring: Health check endpoint voor monitoring van de opschoonjobs.
- Framework: Quarkus (Supersonic Subatomic Java Framework)
- Database: PostgreSQL (met Hibernate ORM & Panache)
- E-mail Service: NotifyNL (voor het verzenden van verificatiecodes)
- Validatie: Hibernate Validator (Jakarta Bean Validation)
- API Documentatie: OpenAPI/Swagger UI
- Job Scheduling: Quarkus Scheduler voor periodieke opschoning
- HTTP Client: Java 11+ HttpClient (managed via CDI)
- Java 21 of hoger
- Maven 3.9+
- Docker & Docker Compose
Start de benodigde services (PostgreSQL) met Docker Compose:
docker-compose up -d- PostgreSQL: Draait op poort
5432.
Start de Quarkus applicatie met live coding ingeschakeld:
./mvnw quarkus:devDe applicatie is beschikbaar op http://localhost:8080.
- Swagger UI:
http://localhost:8080/q/swagger-ui/ - Dev UI:
http://localhost:8080/q/dev/
POST /request: Vraag een nieuwe code aan. Verwacht een JSON metemail(verplicht), en optioneelapiKeyentemplateIdvoor custom NotifyNL configuratie. Retourneert eenreferenceId.POST /verify: Verifieer een code. Verwacht een JSON metreferenceIdencode.
GET /admin/statistics: Haal statistieken op over de verificatieprocessen.GET /admin/cleanup-job/metrics: Haal metrics en health informatie op over de cleanup jobs.
- Bij een aanvraag (
POST /request) wordt eenVerificationCodegegenereerd en opgeslagen in de database. - De verificatiecode wordt direct verzonden via NotifyNL naar het opgegeven e-mailadres.
- De gebruiker ontvangt de code en kan deze verifiëren via
POST /verify. - Bij succesvolle verificatie wordt de code gemarkeerd als gebruikt.
- Periodiek worden verlopen en gebruikte codes opgeschoond en verplaatst naar statistieken.
Belangrijke parameters in src/main/resources/application.properties:
verification.code.validity-minutes: Hoe lang een code geldig blijft (standaard 10 minuten).verification.code.length: Lengte van de gegenereerde verificatiecode (standaard 6 cijfers).verification.cleanup.schedule: Frequentie van de opschoonjobs (standaard elke 60 seconden).
notifynl.emailverificatie.url: NotifyNL API endpoint URL.notifynl.emailverificatie.api-key: Standaard NotifyNL API-sleutel (gebruikt als fallback).notifynl.emailverificatie.template-id: Standaard NotifyNL template-ID (gebruikt als fallback).
httpclient.connect-timeout-seconds: Timeout voor het opzetten van een verbinding (standaard 10 seconden).httpclient.request-timeout-seconds: Timeout voor het voltooien van een request (standaard 30 seconden).
quarkus.datasource.jdbc.url: PostgreSQL database URL.quarkus.datasource.username: Database gebruikersnaam.quarkus.datasource.password: Database wachtwoord.