SMS OTP
Auris supporta l’autenticazione via SMS con codice OTP (One-Time Password) in due modalità:
- Passwordless — L’utente inserisce solo il numero di telefono e verifica con il codice SMS (nessuna password)
- Secondo fattore (2FA) — Il codice SMS viene usato come secondo step dopo il login con email/password
Configurazione Twilio
Auris si integra con Twilio per l’invio degli SMS. Prima di abilitare il metodo SMS, configura l’account Twilio.
Crea un Account Twilio
Vai su twilio.com e crea un account. In fase di sviluppo puoi usare il trial gratuito.
Ottieni un Numero di Telefono
Nel Twilio Console, acquista un numero di telefono SMS-abilitato dalla sezione Phone Numbers → Manage → Buy a number.
Copia le Credenziali API
Dalla dashboard Twilio, copia:
- Account SID
- Auth Token
- Numero mittente (il numero acquistato, es.
+1234567890)
Configura Twilio in Auris
Vai su Console Auris → Impostazioni → Provider SMS e inserisci le credenziali Twilio.
Abilita il Metodo SMS
Vai su Console → Impostazioni → Autenticazione → Metodi Passwordless (o MFA per il 2FA) e abilita SMS OTP.
In ambienti di test Twilio, puoi usare numeri verificati dalla lista di test per inviare SMS senza costi. In produzione viene addebitato ogni SMS inviato.
Modalità 1: SMS Passwordless
JavaScript
import { AurisClient } from '@auris/js'
const auris = new AurisClient({
domain: 'auth.tuodominio.com',
clientId: 'il-tuo-client-id',
})
// Passo 1: Invia l'OTP via SMS
async function sendSmsOtp(phoneNumber) {
const { error } = await auris.sendSmsOtp({ phone: phoneNumber })
if (error) {
console.error('Invio OTP fallito:', error.message)
} else {
console.log('OTP inviato!')
}
}
// Passo 2: Verifica l'OTP
async function verifySmsOtp(phoneNumber, code) {
const { tokens, user, error } = await auris.verifySmsOtp({
phone: phoneNumber,
code,
})
if (error) {
console.error('Verifica fallita:', error.message)
return
}
console.log('Autenticato:', user)
}Modalità 2: SMS come Secondo Fattore (2FA)
Quando SMS OTP è configurato come secondo fattore, viene automaticamente richiesto dopo un login riuscito con email/password, se l’utente ha il telefono verificato o se la policy MFA lo richiede.
Puoi attivare l’SMS come 2FA da Console → Impostazioni → MFA → Metodi MFA → SMS OTP.
// Il secondo fattore viene gestito automaticamente dal flusso di login hosted.
// Per un flusso custom, controlla lo stato del challenge MFA:
const { mfaRequired, mfaToken } = await auris.login({ email, password })
if (mfaRequired) {
// Invia l'OTP SMS all'utente
await auris.sendMfaSmsOtp({ mfaToken })
// Dopo che l'utente inserisce il codice:
const { tokens } = await auris.verifyMfaSmsOtp({ mfaToken, code })
}Endpoint API
/api/auth/sms/sendInvia un codice OTP via SMS al numero specificato. Corpo richiesta: { "phone": "+39 333 1234567" }.
/api/auth/sms/verifyVerifica il codice OTP e restituisce i token di autenticazione. Corpo richiesta: { "phone": "+39 333 1234567", "code": "123456" }.
/api/users/{id}/phoneRequires: manage:usersAggiorna il numero di telefono di un utente.
/api/users/{id}/phone/verifyRequires: manage:usersAvvia la verifica del numero di telefono di un utente.
Limiti di Rate
Per prevenire abusi, Auris applica i seguenti limiti all’SMS OTP:
| Limite | Valore | Descrizione |
|---|---|---|
| Richieste per numero | 5 per ora | Massimo 5 OTP inviati allo stesso numero per ora |
| Cooldown tra invii | 30 secondi | Tempo minimo tra due richieste OTP consecutive |
| Tentativi di verifica | 5 per codice | Il codice viene invalidato dopo 5 tentativi falliti |
| Validità codice | 10 minuti | Il codice scade 10 minuti dopo l’invio |
Sicurezza
Rischio SIM Swap: L’autenticazione via SMS è vulnerabile agli attacchi di SIM swap, dove un malintenzionato convince l’operatore telefonico a trasferire il numero su una nuova SIM. Per account ad alto rischio, considera l’uso di TOTP (app authenticator) o passkey come secondo fattore invece di SMS.
- Codici monouso: Ogni OTP è valido per un solo utilizzo e viene invalidato dopo la verifica
- Hash dei codici: I codici vengono memorizzati come hash nel database — non in chiaro
- Validazione del numero: I numeri di telefono vengono validati in formato E.164 (es.
+39 333 1234567) - Verifica obbligatoria: Il numero di telefono viene verificato prima di poter essere usato per l’autenticazione
Guide Correlate
- Magic Link — Autenticazione passwordless via email
- Passkey / WebAuthn — Alternativa più sicura basata su biometria
- Multi-Factor Authentication — Configura le policy MFA
- Rate Limiting — Gestione avanzata dei limiti