authservice - Architettura e Flussi
Flusso login
POST /auth/loginarriva al routerauth.js.modules/auth.jsusafindUserByUsername(viamodules/user.js).- Password verificata con
bcrypt. - Emissione JWT (
jsonwebtoken) consub,username,type. - Aggiornamento
last_login_atvia client dati.
Flusso validazione Traefik (ForwardAuth)
- Traefik chiama
/auth/validatesuauthservice. auth.jsleggeX-Forwarded-*(path/metodo originali).- Supporta due modalita:
- Bearer JWT
- API key (
X-API-Key)
- Recupera permessi utente/API key via client dati (
datahubendpoint dinamici/legacy). - Valuta regole
resource_pattern+http_method. - Risponde:
200se consentito (con headerX-User-IdoX-Api-Key-Id)401/403se negato.
Flusso autorizzazione
modules/authorization.js implementa il matcher:
- metodo (
ANYo HTTP method specifica); - path match con
minimatchsu pattern; - bypass
ADMIN_ALLquando presente e abilitato.
Accesso ai dati
authservice non interroga direttamente MySQL.
Usa client HTTP (modules/user.js, modules/apiKeys.js) verso layer dati:
- preferenza:
DATAHUB_URL - fallback:
DBMANAGER_URL
Questi client sfruttano shared/datahubAdapter per normalizzare i payload.