Come aggiungere l'autenticazione a due fattori TOTP e le policy di accesso condizionale alle applicazioni interne dell'azienda
Per aggiungere il 2FA TOTP e l'accesso condizionale alle applicazioni interne non si tocca il codice di ogni applicazione: si delega il login a un provider di identità via OpenID Connect e si configura il secondo fattore una volta, nel punto in cui l'autenticazione avviene. Le policy — 2FA disabilitata, opzionale o obbligatoria, durata della sessione, soglia di tentativi falliti, domini email ammessi — si applicano poi per tenant, per progetto e per ruolo, così il pannello di amministrazione può richiedere il secondo fattore sempre mentre l'intranet lo lascia opzionale, con la stessa base utenti.
Cos'è il TOTP, in concreto
TOTP (Time-based One-Time Password, RFC 6238) è un'estensione di HOTP in cui il contatore è il tempo. Server e app di autenticazione condividono un segreto generato una sola volta, alla registrazione; a ogni login entrambi calcolano un HMAC sul segreto e sul numero di intervalli di 30 secondi trascorsi da un'epoca comune, e ne troncano il risultato a 6 cifre. Non transita nulla in rete oltre al codice, e il codice scade da solo.
| Parametro | Valore tipico | Perché conta |
|---|---|---|
| Intervallo (time step) | 30 secondi | Riduce la finestra utile a un codice intercettato |
| Lunghezza del codice | 6 cifre | Compatibile con tutte le app di autenticazione diffuse |
| Algoritmo HMAC | SHA-1 (default RFC 6238) | Usato come funzione HMAC, non come hash di password: non è la debolezza che sembra |
| Tolleranza di deriva | ±1 intervallo | Assorbe orologi leggermente disallineati senza allargare la superficie d'attacco |
| Codifica del segreto | Base32 | Formato atteso dalle app e dal QR code otpauth:// |
| Riuso del codice | Vietato entro la finestra | Blocca il replay di un codice appena usato |
otpauth://totp/Example:mario.rossi@example.com
?secret=JBSWY3DPEHPK3PXP
&issuer=Example
&algorithm=SHA1
&digits=6
&period=30Il TOTP funziona offline, non dipende dalla rete mobile e non ha il costo per messaggio degli SMS. Soprattutto, non è vulnerabile al SIM swap, che è il motivo per cui il NIST considera da anni l'OTP via SMS un fattore debole. Resta invece esposto al phishing in tempo reale: chi si fa consegnare il codice su una pagina clone lo riusa entro i 30 secondi. Per le applicazioni più sensibili, il passaggio successivo sono i fattori legati all'origine crittografica, trattati su autenticazione passwordless.
Passo 1 — Classifica le applicazioni interne
L'errore che fa fallire i progetti MFA non è tecnico: è imporre il secondo fattore ovunque nello stesso giorno. La classificazione serve a decidere dove il costo di frizione è giustificato.
| Livello | Esempi di applicazione | Policy consigliata |
|---|---|---|
| Critico | Pannello admin, gestione utenti, console di deploy, area finanziaria | 2FA obbligatoria per tutti i ruoli, sessione breve |
| Sensibile | CRM, gestionale, HR, ticketing con dati personali | 2FA obbligatoria per ruoli con permessi di scrittura o export |
| Interno standard | Intranet, wiki, prenotazione sale | 2FA opzionale, sessione lunga |
| Pubblico autenticato | Portale clienti, area riservata | 2FA opzionale, obbligatoria su operazioni sensibili |
Passo 2 — Centralizza il login, non il secondo fattore
Se ogni applicazione implementa il proprio TOTP, ottieni N segreti per utente, N flussi di recupero e N implementazioni da mantenere aggiornate. Delegando il login via OIDC, il secondo fattore vive nel provider di identità: l'applicazione riceve un token e non sa nemmeno se l'utente ha usato una password, un codice TOTP o un SSO aziendale.
import { LoginMaster } from "@loginmaster/sdk";
const lm = new LoginMaster({
projectKey: process.env.LOGINMASTER_PROJECT_KEY,
tenant: "https://tenant.example.com",
});
const session = await lm.verifyToken(token);
if (session.valid) {
// La policy 2FA del progetto è già stata applicata a monte
const userId = session.subject;
}Chi non usa TypeScript o .NET fa lo stesso via REST con POST /v1/auth/verify. Il dettaglio degli SDK è su Integrazione. Se le applicazioni interne sono già federate con Entra ID o Google Workspace, la guida al SSO è qui.
Passo 3 — Attiva il TOTP con parametri sensati
- Genera il segreto lato server con un generatore crittograficamente sicuro, almeno 160 bit, e mostralo all'utente una sola volta.
- Conferma l'attivazione solo dopo che l'utente ha inserito un codice valido: senza questa verifica, un utente che ha inquadrato male il QR resta chiuso fuori.
- Rifiuta il riuso di un codice già consumato nella stessa finestra: senza questo controllo il replay di 30 secondi è banale.
- Applica un limite di tentativi per utente e per indirizzo IP: 6 cifre sono un milione di combinazioni, un attacco automatizzato senza limiti le prova in fretta.
- Tieni la tolleranza di deriva a ±1 intervallo. Alzarla a ±5 per 'ridurre i ticket' allunga la finestra utile di un codice rubato da 90 secondi a cinque minuti.
Passo 4 — Enrollment e recupero: la parte che si sottovaluta
Il 2FA introduce un problema nuovo: cosa succede a chi perde il telefono. La risposta scelta qui determina il livello di sicurezza reale del sistema, molto più dei parametri crittografici.
La scorciatoia diffusa è dare all'helpdesk la facoltà di disattivare il secondo fattore su richiesta. È comodo, ed è anche il punto in cui l'intero investimento in MFA si annulla: da quel momento la sicurezza dell'account dipende dalla capacità di un operatore di riconoscere una telefonata di ingegneria sociale. Gli incidenti più noti degli ultimi anni sono passati esattamente da lì, non da una debolezza dell'algoritmo.
- 1Alla registrazione consegna codici di recupero monouso e chiedi conferma esplicita che siano stati salvati.
- 2Consenti la registrazione di più dispositivi: è la contromisura più efficace, perché evita il recupero nella maggior parte dei casi.
- 3Definisci per iscritto la procedura di recupero e i canali verificati che usa (email registrata, numero di telefono confermato).
- 4Dichiara i tempi di recupero nella documentazione interna: una procedura sicura che nessuno conosce diventa un ticket urgente il primo lunedì mattina.
- 5Registra ogni recupero come evento di sicurezza e invialo al SIEM: è uno degli eventi più interessanti da correlare.
Passo 5 — Le policy di accesso condizionale
"Accesso condizionale" significa che la decisione di autenticazione dipende dal contesto invece di essere una costante. Vale la pena essere precisi su cosa fa una piattaforma, perché il termine copre due famiglie diverse: le policy dichiarate — chi accede a cosa, con quale fattore e per quanto tempo — e la valutazione del rischio basata su segnali comportamentali e machine learning.
LoginMaster implementa la prima famiglia: condizioni deterministiche, verificabili e documentabili in un audit, dichiarate a livello di tenant, progetto e ruolo. È una scelta esplicita, ed è anche la famiglia che copre la maggior parte dei requisiti reali di un'organizzazione che deve mettere in sicurezza le proprie applicazioni interne.
| Leva di policy | Valori | Effetto tipico |
|---|---|---|
| 2FA per progetto | disabilitata / opzionale / obbligatoria | Secondo fattore sempre richiesto sul pannello admin, opzionale sull'intranet |
| 2FA per ruolo | obbligatoria su ruoli selezionati | Chi ha permessi di export dati passa dal secondo fattore, gli altri no |
| Durata della sessione | per progetto | 15 minuti sulla console di deploy, 8 ore sul wiki interno |
| Tentativi falliti prima del blocco | soglia per tenant | Blocco temporaneo che spegne il credential stuffing |
| Tipi di secondo fattore ammessi | elenco per tenant | Solo TOTP dove l'OTP via SMS non è accettabile |
| Domini email autorizzati | elenco per tenant | Solo indirizzi del dominio aziendale possono registrarsi |
| Provider SSO abilitati | per tenant | Login solo via Entra ID per i dipendenti, credenziali locali per i partner |
| Requisiti password | per tenant | Complessità e lunghezza minima allineate alla policy interna |
Un esempio di matrice applicata
| Progetto | Ruolo | 2FA | Sessione |
|---|---|---|---|
| Console di amministrazione | qualsiasi | Obbligatoria | 15 minuti |
| Gestionale | amministrazione, finance | Obbligatoria | 2 ore |
| Gestionale | sola lettura | Opzionale | 8 ore |
| Intranet | qualsiasi | Opzionale | 8 ore |
| Portale partner | qualsiasi esterno | Obbligatoria | 1 ora |
Passo 6 — Il rollout che non genera rivolte
- 1Settimana 1: attiva la 2FA obbligatoria sui ruoli amministrativi. Sono pochi, sono i più esposti e sono i più motivati.
- 2Settimane 2-4: rendi il 2FA opzionale per tutti, con una comunicazione che spiega il perché e una guida di enrollment di una pagina.
- 3Settimana 5: rendilo obbligatorio per i ruoli con accesso a dati personali o finanziari, comunicando la data con almeno due settimane di anticipo.
- 4Settimana 6+: estendi progressivamente per reparto, monitorando la percentuale di enrollment e il volume di ticket.
- 5Sempre: misura. Enrollment completati, recuperi richiesti, login falliti per codice errato. Se i recuperi esplodono, il problema è la comunicazione, non il TOTP.
Passo 7 — Scenari limite da collaudare
- Orologio del telefono disallineato di 2 minuti: il codice deve essere rifiutato con un messaggio che suggerisce la sincronizzazione dell'ora.
- Stesso codice inviato due volte: il secondo tentativo deve fallire.
- Tentativi ripetuti con codici casuali: deve scattare il blocco temporaneo e generare un evento di sicurezza.
- Enrollment interrotto a metà: l'utente deve poter ricominciare senza restare in uno stato intermedio bloccante.
- Dispositivo smarrito con codici di recupero disponibili: rientro autonomo, senza intervento dell'helpdesk.
- Utente federato via SSO con MFA già applicata dall'IdP: nessuna doppia richiesta di secondo fattore.
- Ogni evento sopra deve comparire nel log di autenticazione e arrivare al SIEM.
L'ultimo punto non è un dettaglio di completezza: gli eventi di attivazione, disattivazione tentata e recupero del secondo fattore sono fra le prove richieste per i controlli ISO 27001 sugli accessi. Il dettaglio degli eventi e dei formati di export è su integrazione SIEM.
Confronto: cosa chiedere a una piattaforma
Le piattaforme di autenticazione offrono quasi tutte il TOTP. Le differenze che contano emergono sulle domande che nessuno fa in fase di selezione, e che diventano rilevanti dopo il primo incidente.
| Domanda da porre al fornitore | Perché è decisiva |
|---|---|
| Un amministratore può disattivare il 2FA di un utente? | Se sì, la MFA è aggirabile via ingegneria sociale sull'helpdesk: è il vettore più usato |
| Il 2FA è incluso nel prezzo o è un add-on? | Su diverse piattaforme la MFA appartiene a un tier superiore, e il costo scala con gli utenti attivi |
| Posso avere policy diverse per applicazione con la stessa base utenti? | Senza questo, o irrigidisci l'intranet o indebolisci il pannello admin |
| Posso imporre il 2FA solo su alcuni ruoli? | È ciò che rende accettabile il rollout in organizzazioni grandi |
| Gli eventi 2FA finiscono nei log esportabili verso il SIEM? | Senza log esportabili la conformità va ricostruita a mano |
| Dove risiedono i segreti TOTP e chi può leggerli? | È la stessa domanda delle password, e ha la stessa risposta architetturale |
| Il vendor è vincolato a un cloud provider specifico? | Determina la portabilità e la giurisdizione dei dati |
| Aspetto | Piattaforme generaliste | IdP self-hosted | LoginMaster |
|---|---|---|---|
| TOTP | Sì | Sì | Sì, per progetto |
| Disattivazione 2FA da parte dell'admin | Tipicamente possibile | Possibile dall'admin del realm | Tecnicamente impossibile |
| Policy per progetto e per ruolo | Variabile, spesso a tier | Configurabile, a carico tuo | Inclusa |
| Costo al crescere degli utenti | Per utente attivo/mese | Infrastruttura + presidio | Per tenant e progetto, utenti illimitati |
| Manutenzione e patch | Sul fornitore | Sul tuo team | Sul fornitore |
| Giurisdizione dei dati | Dipende dalla region scelta | Dove lo installi | UE, dati personali solo nel tenant |
Il confronto esteso con le singole piattaforme è nell'hub delle alternative; le funzionalità MFA disponibili sono descritte su MFA adattiva e autenticazione adattiva.
Chi ha scritto questa guida
LoginMaster è la piattaforma IAM di CDBKR S.r.l., azienda italiana che progetta e gestisce infrastruttura di autenticazione per software house, MSP e organizzazioni enterprise europee. Il criterio applicato qui — nessun amministratore può intervenire sulle credenziali o sul secondo fattore di un utente — è lo stesso vincolo architetturale su cui è costruito il prodotto, descritto su Sicurezza e autenticazione zero-knowledge. Per una valutazione sul proprio scenario: contatti.
Domande frequenti
Deleghi il login a un provider di identità via OpenID Connect: l'applicazione reindirizza l'utente al provider, che applica la password e il secondo fattore secondo la policy del progetto, e riceve indietro un token già validato. Il codice dell'applicazione cambia solo nel punto in cui verifica il token, tipicamente una decina di righe con l'SDK TypeScript o .NET, oppure una chiamata REST a POST /v1/auth/verify. La logica TOTP, l'enrollment e il recupero non vengono implementati nell'applicazione.
Il TOTP genera il codice localmente sul dispositivo a partire da un segreto condiviso e dall'orario: non transita nulla in rete, funziona offline e non ha costi per messaggio. L'OTP via SMS dipende dalla rete mobile ed è esposto al SIM swap, cioè al trasferimento fraudolento del numero su una nuova SIM, motivo per cui il NIST lo considera un fattore debole. A parità di costo di implementazione, il TOTP è la scelta predefinita per le applicazioni interne.
Significa che la decisione di autenticazione dipende dal contesto anziché essere uguale per tutti. Esistono due famiglie: le policy dichiarate — quale progetto, quale ruolo, quale fattore, quale durata di sessione, quale soglia di tentativi falliti — e la valutazione del rischio basata su segnali comportamentali e machine learning. LoginMaster implementa la prima famiglia, con condizioni deterministiche e verificabili in audit dichiarate per tenant, progetto e ruolo.
In LoginMaster no, e non è una configurazione: la funzione non esiste nel sistema. Il secondo fattore, una volta attivato dall'utente, è modificabile solo dall'utente stesso attraverso la verifica dell'identità su canali già registrati. Questo elimina il vettore più sfruttato negli attacchi recenti, cioè l'ingegneria sociale verso l'helpdesk. Sulla maggior parte delle piattaforme generaliste, invece, un amministratore può reimpostare l'enrollment MFA: è una domanda da porre esplicitamente in fase di selezione.
Sì: in LoginMaster ogni applicazione è un progetto con configurazione di sicurezza indipendente, sulla stessa base utenti del tenant. Il pannello di amministrazione può richiedere il secondo fattore sempre e chiudere la sessione dopo 15 minuti, mentre l'intranet lo lascia opzionale con sessioni di otto ore. Senza questa separazione la scelta è fra irrigidire tutto, con l'effetto di far cercare scorciatoie agli utenti, o allineare tutto al livello più permissivo.
Dipende dal modello di pricing, non dalla tecnologia. Sulle piattaforme che addebitano per utente attivo, la MFA appartiene spesso a un tier superiore e il costo cresce linearmente con la base utenti. LoginMaster fattura per tenant e per progetto: gli utenti sono illimitati e inclusi, e la 2FA configurabile per progetto fa parte del licensing standard senza add-on. Con decine di migliaia di utenti la differenza fra i due modelli diventa la voce dominante del confronto.
Solo in parte. Elimina il riuso delle credenziali rubate e blocca gli attacchi automatizzati con password trapelate, ma non ferma il phishing in tempo reale: una pagina clone che chiede anche il codice a 6 cifre lo riusa entro i 30 secondi di validità. Per le applicazioni più esposte la contromisura è un fattore legato crittograficamente all'origine, cioè le passkey; nel frattempo il TOTP resta un miglioramento sostanziale rispetto alla sola password, e la sua adozione è molto più rapida.
Sì, a condizione che siano esportabili e conservati. Gli eventi di autenticazione riuscita e fallita, di attivazione del secondo fattore, di recupero e di blocco per tentativi ripetuti sono fra le evidenze richieste dai controlli sugli accessi. LoginMaster registra queste categorie di eventi e le rende disponibili alle applicazioni tramite webhook firmati HMAC-SHA256 e REST API; il connettore nativo verso i SIEM enterprise, con Syslog CEF su TLS, è sul roadmap. La prova da portare in audit è il log correlato, non uno screenshot di una console.
Vuoi vedere LoginMaster in azione?
Richiedi una demo personalizzata e scopri come gestire identità e accessi in modo sicuro e conforme.