> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contraseñas de un solo uso (OTP)

> Envía mensajes de contraseña de un solo uso con OneSignal para autenticación de dos factores, verificación de cuentas y prevención de fraude. Cubre OneSignal Verify, autenticación con código propia (DIY), mejores prácticas de remitente dedicado y validación de audiencia.

Un mensaje de contraseña de un solo uso (OTP) es un texto que contiene un código corto y temporal para verificar la identidad de un usuario. El usuario introduce el código en tu aplicación o sitio web para demostrar que tiene acceso al número de teléfono que proporcionó.

Los mensajes OTP ofrecen:

* **Protección de la cuenta:** evitar el acceso no autorizado reduce los costos de soporte, las pérdidas por fraude y el daño a la reputación
* **Validación del número de teléfono:** un OTP que se entrega y se introduce correctamente confirma que el número es real, está activo y está en manos de la persona que lo envió
* **Prevención de fraude en la puerta de entrada:** los OTP en la creación de cuentas disuaden los registros falsos, las cuentas de bots y el abuso
* **Base regulatoria y de cumplimiento:** para ciertas industrias (finanzas, salud), se requiere autenticación multifactor. El OTP por SMS es el método más accesible porque funciona en todos los teléfonos sin necesidad de instalar ninguna aplicación

Disparadores comunes:

* **Creación de cuenta:** confirmar el número de teléfono de un nuevo usuario durante el registro
* **Inicio de sesión / autenticación de dos factores:** agregar una segunda capa de verificación más allá de una contraseña
* **Restablecimiento de contraseña:** confirmar la identidad antes de permitir un cambio de credenciales
* **Confirmación de transacción:** verificar una acción de alto valor como una transferencia de dinero o un cambio de dirección

***

## Requisitos de consentimiento

El consentimiento para los mensajes OTP sigue el mismo estándar que los mensajes transaccionales. Que un usuario introduzca su número de teléfono en un formulario que incluya un texto de divulgación es un opt-in suficiente. La divulgación debe aparecer directamente en el campo del número de teléfono o cerca de él, no en una página separada ni enterrada en los términos de servicio.

<Card title="Texto de divulgación requerido" icon="shield" href="./sms-opt-in-and-collection#otp-opt-ins">
  Requisitos del texto de divulgación y las reglas completas de cumplimiento para el opt-in de OTP.
</Card>

***

## Cómo enviar mensajes OTP

Hay dos formas de enviar mensajes OTP con OneSignal:

| Método                             | Ideal para                                                                                                        | Lo que gestionas                                                                   |
| ---------------------------------- | ----------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **OneSignal Verify** (Recomendado) | Equipos que quieren una solución gestionada: la generación de códigos, la entrega y la validación se hacen por ti | Solo la configuración                                                              |
| **Crear el tuyo propio**           | Equipos que necesitan lógica de verificación personalizada o que ya tienen un sistema de generación de códigos    | Generación de códigos, almacenamiento, expiración, limitación de tasa y validación |

***

## OneSignal Verify

<Note>
  Verify solo está disponible para clientes de OneSignal SMS (no para la integración de Twilio).
</Note>

<Steps>
  <Step title="Crear un servicio de verificación">
    Establece un nombre descriptivo (el nombre de tu marca), la longitud del código y la frecuencia con la que se regenera un código.
  </Step>

  <Step title="Enviar un código de verificación">
    Proporciona el número de teléfono del usuario y el canal (`sms`). Opcionalmente, especifica un código personalizado o anula la longitud del código.

    Por defecto, el mensaje enviado al usuario final dice: *"Your \[brand name] verification code is: XXXXXX."*
  </Step>

  <Step title="Comprobar el código de verificación">
    Proporciona el número de teléfono del usuario y el código que introdujo. La API devuelve si el código es válido.
  </Step>
</Steps>

### Consideraciones adicionales

* **Expiración:** Los códigos expiran después de 10 minutos por defecto. Contacta a soporte para personalizarlo.
* **Reintentos:** Gestiona los intentos de verificación fallidos e implementa la lógica de reintento en tu aplicación.
* **Seguridad:** Sigue las mejores prácticas para manejar datos sensibles como números de teléfono y códigos de verificación.

***

## Crear tu propia autenticación con código

También puedes gestionar la lógica de verificación tú mismo: generar códigos, controlar la expiración y validar los intentos en tu propio backend. Con este enfoque, envías mensajes OTP a través de la [API Create Message](/reference/create-message) de OneSignal como un SMS estándar activado por API.

<Steps>
  <Step title="Generar un código en tu backend">
    Normalmente de 4 a 8 dígitos con una ventana de expiración de 5 a 10 minutos.
  </Step>

  <Step title="Enviarlo a través de la API de OneSignal">
    Llama al endpoint Create Message con el número de teléfono del destinatario, tu remitente de OTP y un cuerpo de mensaje que contenga el código (por ejemplo, *"Your \[brand name] verification code is 847291. It expires in 10 minutes."*).
  </Step>

  <Step title="Validar el código">
    Cuando el usuario envíe el código en tu aplicación, compáralo con lo que almacenaste. Invalida el código después de una comprobación exitosa o después de la expiración, lo que ocurra primero.
  </Step>
</Steps>

### Tus responsabilidades

* Generar y almacenar los códigos de forma segura
* Aplicar la expiración: los códigos no deben ser válidos indefinidamente
* **Limitación de tasa:** limita cuántos códigos puede solicitar un solo número de teléfono en una ventana determinada para prevenir el fraude de SMS pumping
* **Límites de intentos:** bloquea después de un número determinado de entradas fallidas (por ejemplo, de 3 a 5 intentos) para prevenir ataques de fuerza bruta
* **Lógica de reintento:** gestionar los casos en los que el SMS no se entrega

***

## Mejor práctica de remitente dedicado

Aunque puedes enviar mensajes OTP desde cualquier remitente, es una mejor práctica usar un remitente dedicado aprobado para el caso de uso de autenticación.

Si tus mensajes OTP comparten un remitente con mensajes promocionales o transaccionales, un solo opt-out con STOP significa que el usuario ya no puede recibir códigos de verificación, lo que efectivamente lo deja bloqueado fuera de su propia cuenta. Un remitente OTP dedicado mantiene los opt-outs acotados para que una baja de marketing nunca bloquee un código de seguridad.

***

## Validación de audiencia

Una lista de suscriptores limpia es esencial para la entregabilidad de los OTP. Los números inválidos o desconectados significan que los códigos de verificación no llegan al usuario, lo que puede bloquear la creación de cuentas, dejar a los usuarios fuera de los restablecimientos de contraseña y erosionar la confianza en tu flujo de autenticación.

Valida los números de teléfono con Lookup en el punto de recopilación, recopila únicamente números de las regiones en las que tienes un recurso de remitente aprobado y almacena todos los números en formato E.164 (por ejemplo, `+14155551234`).

<Card title="Validación de audiencia" icon="circle-check" href="./sms-opt-in-and-collection#audience-validation">
  Detalles completos sobre Lookup, restricciones por región, verificación de propiedad y formato E.164.
</Card>

***

## Preguntas frecuentes

### ¿Cuál es la diferencia entre OneSignal Verify y crear mi propio OTP?

OneSignal Verify gestiona la generación de códigos, la entrega y la validación por ti. Tú solo gestionas la configuración. Crear el tuyo propio te da más control sobre la lógica de verificación, pero eres responsable de la generación de códigos, el almacenamiento, la expiración, la limitación de tasa y la gestión de reintentos. OneSignal Verify solo está disponible para clientes de OneSignal SMS (no para la integración de Twilio).

### ¿Cuánto duran los códigos de verificación con OneSignal Verify?

Los códigos expiran después de 10 minutos por defecto. Contacta al soporte de OneSignal para personalizar la ventana de expiración.

### ¿Por qué necesito un remitente dedicado para los OTP?

Si un usuario envía STOP por mensaje de texto a un remitente que gestiona tanto OTP como otros tipos de mensajes, queda excluido de todos los mensajes de ese remitente, incluidos los códigos de verificación. Esto puede dejarlo bloqueado fuera de su cuenta. Un remitente OTP dedicado mantiene los opt-outs limpiamente acotados.

### ¿Qué sucede si un OTP no se entrega?

Con OneSignal Verify, contacta a soporte si observas fallos de entrega generalizados. Si estás creando el tuyo propio, implementa la lógica de reintento en tu backend y monitorea los códigos de error en Audience Activity. Consulta [Informes de mensajes SMS](./sms-message-reports#understanding-sms-failures) para solucionar problemas relacionados con los códigos de error.

### ¿Puedo usar mensajes OTP para la verificación al crear una cuenta?

Sí. Este es uno de los casos de uso más comunes: enviar un código durante el registro para confirmar que el usuario es el propietario del número de teléfono que proporcionó. Lookup también puede ayudar en esta etapa a validar el número antes de enviarlo.

***

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Opt-in y recopilación de SMS" icon="user-plus" href="./sms-opt-in-and-collection">
    Métodos de recopilación, texto de divulgación requerido y validación de audiencia para todos los tipos de programa.
  </Card>

  <Card title="Mensajería transaccional" icon="receipt" href="./sms-transactional-messaging">
    Casos de uso transaccionales y puntos de recopilación junto con los programas de OTP.
  </Card>

  <Card title="Informes de mensajes SMS" icon="chart-line" href="./sms-message-reports">
    Métricas de entrega y códigos de error de SMS para solucionar fallos de OTP.
  </Card>

  <Card title="API Create Message" icon="code" href="/reference/create-message">
    Referencia de la API para activar envíos de OTP y transaccionales desde tu backend.
  </Card>
</Columns>
