Skip to Content

SMS OTP

Auris supporta l’autenticazione via SMS con codice OTP (One-Time Password) in due modalità:

  1. Passwordless — L’utente inserisce solo il numero di telefono e verifica con il codice SMS (nessuna password)
  2. 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

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

POST/api/auth/sms/send

Invia un codice OTP via SMS al numero specificato. Corpo richiesta: { "phone": "+39 333 1234567" }.

POST/api/auth/sms/verify

Verifica il codice OTP e restituisce i token di autenticazione. Corpo richiesta: { "phone": "+39 333 1234567", "code": "123456" }.

POST/api/users/{id}/phoneRequires: manage:users

Aggiorna il numero di telefono di un utente.

POST/api/users/{id}/phone/verifyRequires: manage:users

Avvia la verifica del numero di telefono di un utente.


Limiti di Rate

Per prevenire abusi, Auris applica i seguenti limiti all’SMS OTP:

LimiteValoreDescrizione
Richieste per numero5 per oraMassimo 5 OTP inviati allo stesso numero per ora
Cooldown tra invii30 secondiTempo minimo tra due richieste OTP consecutive
Tentativi di verifica5 per codiceIl codice viene invalidato dopo 5 tentativi falliti
Validità codice10 minutiIl 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