Skip to Content

API Sicurezza

L’API Sicurezza fornisce strumenti per proteggere il tenant da accessi non autorizzati e attività malevole. Gli amministratori possono gestire liste di IP consentiti/bloccati, esaminare eventi di login sospetti, configurare la verifica CAPTCHA e gestire i blocchi degli account.

Auris valuta le regole di sicurezza durante ogni tentativo di autenticazione in questo ordine: regole IP (blocco/permesso) → verifica CAPTCHA → rate limiting → validazione credenziali → analisi login sospetti → MFA adattivo. Ogni livello opera indipendentemente e può essere configurato separatamente.

Regole IP

Le regole IP definiscono liste di permesso e blocco usando la notazione CIDR. Le regole di blocco hanno sempre precedenza sulle regole di permesso. Le regole possono essere limitate all’intero tenant o a un’applicazione specifica.

Elenca Regole IP

GET/api/ip-rulesRequires: manage:users

Elenca tutte le regole IP allow/block configurate per il tenant. Supporta filtraggio per tipo di regola, scope e stato attivo. Le regole sono ordinate per data di creazione decrescente.

Parametri di query

ParametroTipoDescrizione
typestringFiltra per tipo di regola: ALLOW o BLOCK
scopestringFiltra per scope: TENANT o APPLICATION
isActivebooleanFiltra per stato attivo
pageintegerNumero di pagina (default: 1)
limitintegerElementi per pagina (default: 20, max: 100)

Risposta di successo

{ "ok": true, "data": { "data": [ { "id": "ipr_abc123", "cidr": "203.0.113.0/24", "type": "BLOCK", "scope": "TENANT", "applicationId": null, "label": "Known bad actor range", "note": "Blocked after brute-force campaign on 2025-02-10", "isTemporary": true, "expiresAt": "2025-03-10T00:00:00Z", "isActive": true, "createdAt": "2025-02-10T14:30:00Z", "updatedAt": "2025-02-10T14:30:00Z" }, { "id": "ipr_def456", "cidr": "10.0.0.0/8", "type": "ALLOW", "scope": "TENANT", "applicationId": null, "label": "Corporate VPN", "note": "Internal network range", "isTemporary": false, "expiresAt": null, "isActive": true, "createdAt": "2025-01-15T09:00:00Z", "updatedAt": "2025-01-15T09:00:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 3, "totalPages": 1 } } }

Crea Regola IP

POST/api/ip-rulesRequires: manage:users

Crea una nuova regola IP allow o block. La notazione CIDR è obbligatoria — usa /32 per un singolo indirizzo IP. Le regole di blocco hanno sempre precedenza sulle regole di permesso durante la valutazione.

Corpo della richiesta

{ "cidr": "192.0.2.0/24", "type": "BLOCK", "scope": "TENANT", "label": "Datacenter range", "note": "Blocked due to automated scraping activity", "isTemporary": true, "expiresAt": "2025-04-01T00:00:00Z" }
CampoTipoObbligatorioDescrizione
cidrstringSìIndirizzo IP o intervallo in notazione CIDR (es. 10.0.0.1/32, 192.168.0.0/16)
typestringSìALLOW o BLOCK
scopestringSìTENANT (si applica a tutte le app) o APPLICATION (richiede applicationId)
applicationIdstringNoObbligatorio quando scope è APPLICATION
labelstringNoEtichetta leggibile per la regola
notestringNoNota amministrativa o motivo
isTemporarybooleanNoSe la regola scade automaticamente (default: false)
expiresAtstringNoData di scadenza ISO 8601. Obbligatorio quando isTemporary è true

Codici di errore

CodiceHTTPDescrizione
VALIDATION_ERROR400Notazione CIDR non valida, campi obbligatori mancanti, o combinazione scope/tipo non valida
DUPLICATE_RULE409Esiste già una regola con lo stesso CIDR e scope

Le regole temporanee vengono automaticamente rimosse dopo il timestamp expiresAt. Non è necessario eliminarle manualmente.

Aggiorna Regola IP

PATCH/api/ip-rules/[id]Requires: manage:users

Aggiorna una regola IP esistente. Tutti i campi sono opzionali — solo i campi forniti vengono aggiornati. La modifica del CIDR o del tipo di una regola ha effetto immediato.

Elimina Regola IP

DELETE/api/ip-rules/[id]Requires: manage:users

Elimina definitivamente una regola IP. La regola viene rimossa immediatamente.

Codici di errore

CodiceHTTPDescrizione
NOT_FOUND404La regola IP non esiste

Eventi di Login Sospetti

Auris monitora i tentativi di login per comportamenti anomali usando cinque metodi di rilevamento: nuovo dispositivo, nuovo indirizzo IP, nuovo paese, viaggio impossibile e utilizzo VPN/proxy. Quando viene rilevata un’attività sospetta, viene registrato un evento e viene eseguita l’azione configurata (solo log, richiesta MFA, o blocco).

Elenca Eventi di Login Sospetti

GET/api/suspicious-login/eventsRequires: manage:users

Elenca gli eventi di login sospetti nel tenant. Gli eventi sono ordinati per data di creazione decrescente. Usa il filtro reviewed per trovare eventi che richiedono attenzione.

Parametri di query

ParametroTipoDescrizione
userIdstringFiltra eventi per un utente specifico
severitystringFiltra per gravità: low, medium, high, critical
reasonstringFiltra per motivo: new_device, new_ip, new_country, impossible_travel, vpn_detected
reviewedbooleantrue per eventi revisionati, false per non revisionati
pageintegerNumero di pagina (default: 1)
limitintegerElementi per pagina (default: 20, max: 100)

Risposta di successo

{ "ok": true, "data": { "data": [ { "id": "sle_abc123", "userId": "usr_xyz789", "userEmail": "[email protected]", "reason": "impossible_travel", "severity": "high", "actionTaken": "require_mfa", "details": { "previousLocation": { "country": "Italy", "city": "Rome" }, "currentLocation": { "country": "Brazil", "city": "Sao Paulo" }, "distanceKm": 9187, "timeDiffMinutes": 45, "requiredSpeedKmh": 12249 }, "ipAddress": "198.51.100.42", "reviewed": false, "createdAt": "2025-02-18T09:15:00Z" } ], "pagination": { "page": 1, "limit": 20, "total": 47, "totalPages": 3 } } }

Segna Evento come Revisionato

PATCH/api/suspicious-login/events/[id]/reviewRequires: manage:users

Segna un evento di login sospetto come revisionato. Questo è un riconoscimento amministrativo e non influisce sull’accesso dell’utente.

Codici di errore

CodiceHTTPDescrizione
NOT_FOUND404L’evento non esiste
ALREADY_REVIEWED400L’evento è già stato segnato come revisionato

Recupera Configurazione Rilevamento

GET/api/suspicious-login/configRequires: manage:users

Recupera la configurazione attuale di rilevamento dei login sospetti per il tenant.

Risposta di successo

{ "ok": true, "data": { "detectNewDevice": true, "detectNewIp": true, "detectNewCountry": true, "detectImpossibleTravel": true, "detectVpn": false, "actionOnNewDevice": "log", "actionOnNewIp": "log", "actionOnNewCountry": "require_mfa", "actionOnImpossibleTravel": "require_mfa", "actionOnVpn": "log", "maxTravelSpeedKmh": 900, "geoIpProvider": "ip-api", "updatedAt": "2025-02-01T12:00:00Z" } }
CampoTipoDescrizione
detectNewDevicebooleanSegnala i login da dispositivi mai visti prima
detectNewIpbooleanSegnala i login da indirizzi IP mai visti prima
detectNewCountrybooleanSegnala i login da un nuovo paese
detectImpossibleTravelbooleanSegnala quando i login consecutivi sono geograficamente impossibili dato il tempo trascorso
detectVpnbooleanSegnala i login da IP VPN/proxy/datacenter noti
actionOn*stringAzione da intraprendere: log (solo registra), require_mfa (forza 2FA), block (nega accesso)
maxTravelSpeedKmhintegerSoglia di velocità per il rilevamento del viaggio impossibile (default: 900 km/h)

Aggiorna Configurazione Rilevamento

PATCH/api/suspicious-login/configRequires: manage:users

Aggiorna la configurazione di rilevamento dei login sospetti. Tutti i campi sono opzionali. Le modifiche hanno effetto immediato sui successivi tentativi di login.

Impostare actionOnImpossibleTravel o actionOnNewCountry su block può bloccare utenti legittimi che viaggiano frequentemente o usano reti mobili. Considera di usare require_mfa invece, che aggiunge un passaggio di verifica senza negare completamente l’accesso.

CAPTCHA

La verifica CAPTCHA aggiunge una sfida umana ai flussi di autenticazione. Auris supporta tre provider: Cloudflare Turnstile, hCaptcha e reCAPTCHA v3. Il CAPTCHA può essere attivato ad ogni tentativo, solo dopo attività sospetta, o dopo un numero configurabile di tentativi di login falliti.

Recupera Configurazione CAPTCHA

GET/api/captcha/configRequires: manage:users

Recupera la configurazione CAPTCHA attuale per il tenant.

Risposta di successo

{ "ok": true, "data": { "provider": "CLOUDFLARE_TURNSTILE", "trigger": "ON_SUSPICIOUS", "siteKey": "0x4AAAAAAA...", "scoreThreshold": 0.5, "enableOnLogin": true, "enableOnRegister": true, "enableOnReset": false, "updatedAt": "2025-02-15T10:00:00Z" } }

La secretKey non viene mai restituita nelle risposte API. Può essere impostata solo tramite l’endpoint di aggiornamento.

Aggiorna Configurazione CAPTCHA

PATCH/api/captcha/configRequires: manage:users

Aggiorna la configurazione CAPTCHA. Tutti i campi sono opzionali. Imposta provider su null per disabilitare completamente il CAPTCHA.

Corpo della richiesta

{ "provider": "CLOUDFLARE_TURNSTILE", "trigger": "AFTER_FAILURES", "siteKey": "0x4AAAAAAA_your_site_key", "secretKey": "0x4AAAAAAA_your_secret_key", "scoreThreshold": 0.5, "enableOnLogin": true, "enableOnRegister": true, "enableOnReset": true }
CampoTipoDescrizione
providerstringCLOUDFLARE_TURNSTILE, HCAPTCHA, RECAPTCHA_V3, o null per disabilitare
triggerstringALWAYS, ON_SUSPICIOUS, AFTER_FAILURES
siteKeystringChiave sito pubblica del provider CAPTCHA
secretKeystringChiave segreta del provider CAPTCHA (solo scrittura, mai restituita)
scoreThresholdnumberSoglia punteggio per reCAPTCHA v3 (0.0 - 1.0, default: 0.5)
enableOnLoginbooleanAbilita CAPTCHA nella pagina di login
enableOnRegisterbooleanAbilita CAPTCHA nella pagina di registrazione
enableOnResetbooleanAbilita CAPTCHA nella pagina di reset password

Codici di errore

CodiceHTTPDescrizione
VALIDATION_ERROR400Provider non valido, siteKey/secretKey mancanti quando il provider è impostato, o scoreThreshold fuori intervallo

Blocchi Account

Quando un utente supera il lockoutThreshold configurato nelle impostazioni di sicurezza, il suo account viene temporaneamente bloccato. Gli amministratori possono visualizzare gli account bloccati e sbloccarli manualmente.

Elenca Account Bloccati

GET/api/admin/lockoutsRequires: manage:users

Elenca tutti gli account utente attualmente bloccati. Vengono restituiti solo gli account con blocchi attivi. I blocchi scaduti naturalmente non sono inclusi.

Risposta di successo

{ "ok": true, "data": { "data": [ { "id": "lock_abc123", "userId": "usr_xyz789", "userEmail": "[email protected]", "userName": "Alice Smith", "failedAttempts": 5, "lockedAt": "2025-02-18T09:00:00Z", "expiresAt": "2025-02-18T09:15:00Z", "ipAddress": "203.0.113.50" } ], "pagination": { "page": 1, "limit": 20, "total": 2, "totalPages": 1 } } }

Sblocca Account

DELETE/api/admin/lockouts/[userId]Requires: manage:users

Sblocca immediatamente un account utente. Il contatore dei tentativi falliti viene azzerato. L’utente può tentare di accedere nuovamente immediatamente dopo lo sblocco.

Risposta di successo

{ "ok": true, "data": { "unlocked": true, "userId": "usr_xyz789" } }

Codici di errore

CodiceHTTPDescrizione
NOT_FOUND404L’utente non è attualmente bloccato

I blocchi account scadono automaticamente in base alla lockoutDuration configurata nelle impostazioni di sicurezza. Lo sblocco manuale è necessario solo quando un utente legittimo è bloccato e non può aspettare la scadenza del blocco.

Ordine di Valutazione della Sicurezza

Durante ogni tentativo di autenticazione, Auris valuta i livelli di sicurezza in questo ordine:

  1. Regole IP — Se l’IP del client corrisponde a una regola BLOCK, la richiesta viene negata con 403 IP_BLOCKED.
  2. CAPTCHA — Se il CAPTCHA è configurato e la condizione di trigger è soddisfatta, il client deve fornire un token CAPTCHA valido.
  3. Rate Limiting — Vengono controllati i limiti di frequenza a finestra scorrevole (configurabili per tier).
  4. Validazione Credenziali — Verifica nome utente/password o altre credenziali tramite Keycloak.
  5. Brute Force / Blocco — Il contatore dei tentativi falliti viene incrementato. Se la soglia viene raggiunta, l’account viene bloccato.
  6. Analisi Login Sospetti — Analisi post-autenticazione di dispositivo, IP, geografia e pattern di viaggio.
  7. MFA Adattivo — La valutazione del rischio può richiedere un’autenticazione step-up se il punteggio di rischio supera le soglie.

Ogni livello è indipendente e può essere disabilitato senza influenzare gli altri.

Riferimento Permessi

PermessoDescrizione
manage:usersGestisce regole IP, revisiona eventi di login sospetti, configura CAPTCHA e sblocca account

Correlati