> ## 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.

# Senhas de uso único (OTP)

> Envie mensagens de senha de uso único com o OneSignal para autenticação de dois fatores, verificação de conta e prevenção de fraudes. Aborda o OneSignal Verify, autenticação por código DIY, melhores práticas de remetente dedicado e validação de público.

Uma mensagem de senha de uso único (OTP) é um texto que contém um código curto e temporário para verificar a identidade de um usuário. O usuário insere o código no seu aplicativo ou site para comprovar que tem acesso ao número de telefone que forneceu.

As mensagens OTP oferecem:

* **Proteção de conta:** impedir o acesso não autorizado reduz custos de suporte, perdas com fraudes e danos à reputação
* **Validação de número de telefone:** um OTP que é entregue e inserido corretamente confirma que o número é real, ativo e está nas mãos da pessoa que o enviou
* **Prevenção de fraudes na porta de entrada:** OTPs no momento da criação da conta inibem cadastros falsos, contas de bots e abusos
* **Base regulatória e de conformidade:** para certos setores (financeiro, saúde), a autenticação multifator é obrigatória. O OTP por SMS é o método mais acessível porque funciona em qualquer telefone, sem necessidade de instalar um aplicativo

Gatilhos comuns:

* **Criação de conta:** confirmar o número de telefone de um novo usuário durante o cadastro
* **Login / autenticação de dois fatores:** adicionar uma segunda camada de verificação além da senha
* **Redefinição de senha:** confirmar a identidade antes de permitir a alteração de credenciais
* **Confirmação de transação:** verificar uma ação de alto valor, como uma transferência de dinheiro ou alteração de endereço

***

## Requisitos de consentimento

O consentimento para mensagens OTP segue o mesmo padrão das mensagens transacionais. O usuário inserir seu número de telefone em um formulário que inclua o texto de divulgação é um opt-in suficiente. A divulgação deve aparecer diretamente sobre ou próxima ao campo de número de telefone, não em uma página separada nem oculta nos termos de serviço.

<Card title="Texto de divulgação obrigatório" icon="shield" href="./sms-opt-in-and-collection#otp-opt-ins">
  Requisitos do texto de divulgação e as regras completas de conformidade de opt-in de OTP.
</Card>

***

## Como enviar mensagens OTP

Há duas maneiras de enviar mensagens OTP com o OneSignal:

| Método                             | Ideal para                                                                                                | O que você gerencia                                                        |
| ---------------------------------- | --------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
| **OneSignal Verify** (Recomendado) | Equipes que querem uma solução gerenciada: geração de código, entrega e validação tratadas para você      | Apenas configuração                                                        |
| **Crie a sua própria**             | Equipes que precisam de lógica de verificação personalizada ou que já têm um sistema de geração de código | Geração de código, armazenamento, expiração, limitação de taxa e validação |

***

## OneSignal Verify

<Note>
  O Verify está disponível apenas para clientes de SMS do OneSignal (não para a integração com a Twilio).
</Note>

<Steps>
  <Step title="Crie um serviço de verificação">
    Defina um nome amigável (o nome da sua marca), o comprimento do código e a frequência com que um código é regenerado.
  </Step>

  <Step title="Envie um código de verificação">
    Forneça o número de telefone do usuário e o canal (`sms`). Opcionalmente, especifique um código personalizado ou substitua o comprimento do código.

    Por padrão, a mensagem enviada ao usuário final diz: *"Seu código de verificação \[nome da marca] é: XXXXXX."*
  </Step>

  <Step title="Verifique o código de verificação">
    Forneça o número de telefone do usuário e o código que ele inseriu. A API retorna se o código é válido.
  </Step>
</Steps>

### Considerações adicionais

* **Expiração:** os códigos expiram após 10 minutos por padrão. Entre em contato com o suporte para personalizar.
* **Novas tentativas:** trate as tentativas de verificação que falharem e implemente a lógica de novas tentativas no seu aplicativo.
* **Segurança:** siga as melhores práticas para lidar com dados sensíveis, como números de telefone e códigos de verificação.

***

## Crie a sua própria autenticação por código

Você também pode gerenciar a lógica de verificação por conta própria: gerar códigos, controlar a expiração e validar tentativas no seu próprio backend. Nessa abordagem, você envia mensagens OTP por meio da [API Create Message](/reference/create-message) do OneSignal como um SMS padrão acionado por API.

<Steps>
  <Step title="Gere um código no seu backend">
    Normalmente de 4 a 8 dígitos, com uma janela de expiração de 5 a 10 minutos.
  </Step>

  <Step title="Envie-o pela API do OneSignal">
    Chame o endpoint Create Message com o número de telefone do destinatário, o seu remetente de OTP e um corpo de mensagem contendo o código (por exemplo, *"Seu código de verificação \[nome da marca] é 847291. Ele expira em 10 minutos."*).
  </Step>

  <Step title="Valide o código">
    Quando o usuário enviar o código no seu aplicativo, verifique-o em relação ao que você armazenou. Invalide o código após uma verificação bem-sucedida ou após a expiração, o que ocorrer primeiro.
  </Step>
</Steps>

### Suas responsabilidades

* Gerar e armazenar os códigos de forma segura
* Garantir a expiração: os códigos não devem ser válidos indefinidamente
* **Limitação de taxa:** limite quantos códigos um único número de telefone pode solicitar em uma determinada janela para evitar fraudes de SMS pumping
* **Limites de tentativas:** bloqueie após um número definido de entradas com falha (por exemplo, de 3 a 5 tentativas) para evitar ataques de força bruta
* **Lógica de novas tentativas:** tratar os casos em que o SMS não é entregue

***

## Melhor prática de remetente dedicado

Embora você possa enviar mensagens OTP de qualquer remetente, a melhor prática é usar um remetente dedicado aprovado para o caso de uso de autenticação.

Se as suas mensagens OTP compartilharem um remetente com mensagens promocionais ou transacionais, um único opt-out por STOP significa que o usuário não poderá mais receber códigos de verificação, efetivamente bloqueando o acesso à própria conta. Um remetente de OTP dedicado mantém os opt-outs restritos ao escopo, de modo que um cancelamento de inscrição de marketing nunca bloqueie um código de segurança.

***

## Validação de público

Uma lista de assinantes limpa é essencial para a entregabilidade de OTP. Números inválidos ou desconectados significam que os códigos de verificação não chegam ao usuário, o que pode bloquear a criação de contas, impedir o acesso de usuários em redefinições de senha e corroer a confiança no seu fluxo de autenticação.

Valide os números de telefone com o Lookup no ponto de coleta, colete apenas números de regiões nas quais você tenha um recurso de remetente aprovado e armazene todos os números no formato E.164 (por exemplo, `+14155551234`).

<Card title="Validação de público" icon="circle-check" href="./sms-opt-in-and-collection#audience-validation">
  Todos os detalhes sobre o Lookup, restrições de região, verificação de propriedade e formatação E.164.
</Card>

***

## Perguntas frequentes

### Qual é a diferença entre o OneSignal Verify e criar o meu próprio OTP?

O OneSignal Verify trata a geração de código, a entrega e a validação para você. Você gerencia apenas a configuração. Criar o seu próprio dá mais controle sobre a lógica de verificação, mas você é responsável pela geração de código, armazenamento, expiração, limitação de taxa e tratamento de novas tentativas. O OneSignal Verify está disponível apenas para clientes de SMS do OneSignal (não para a integração com a Twilio).

### Quanto tempo duram os códigos de verificação com o OneSignal Verify?

Os códigos expiram após 10 minutos por padrão. Entre em contato com o suporte do OneSignal para personalizar a janela de expiração.

### Por que preciso de um remetente dedicado para OTPs?

Se um usuário enviar STOP por texto para um remetente que trata tanto OTPs quanto outros tipos de mensagem, ele será removido (opt-out) de todas as mensagens desse remetente, incluindo os códigos de verificação. Isso pode bloquear o acesso à conta. Um remetente de OTP dedicado mantém os opt-outs restritos ao escopo de forma limpa.

### O que acontece se um OTP não for entregue?

Com o OneSignal Verify, entre em contato com o suporte se você observar falhas de entrega generalizadas. Se você estiver criando o seu próprio, implemente a lógica de novas tentativas no seu backend e monitore os códigos de erro em Audience Activity. Consulte [Relatórios de mensagens SMS](./sms-message-reports#understanding-sms-failures) para a solução de problemas de códigos de erro.

### Posso usar mensagens OTP para verificação de criação de conta?

Sim. Esse é um dos casos de uso mais comuns: enviar um código durante o cadastro para confirmar que o usuário é dono do número de telefone que forneceu. O Lookup também pode ajudar nesta etapa para validar o número antes do envio.

***

## Páginas relacionadas

<Columns cols={2}>
  <Card title="Opt-in e coleta de SMS" icon="user-plus" href="./sms-opt-in-and-collection">
    Métodos de coleta, texto de divulgação obrigatório e validação de público para todos os tipos de programa.
  </Card>

  <Card title="Mensagens transacionais" icon="receipt" href="./sms-transactional-messaging">
    Casos de uso transacionais e pontos de coleta junto com programas de OTP.
  </Card>

  <Card title="Relatórios de mensagens SMS" icon="chart-line" href="./sms-message-reports">
    Métricas de entrega e códigos de erro de SMS para solução de problemas de falhas de OTP.
  </Card>

  <Card title="API Create Message" icon="code" href="/reference/create-message">
    Referência da API para acionar envios de OTP e transacionais a partir do seu backend.
  </Card>
</Columns>
