1001Ferramentas
🔑 Segurança

Construtor de otpauth:// URI para TOTP

Monta URI otpauth://totp/ com issuer, conta, secret base32, dígitos e período para gerar QR code do Google Authenticator.

Montando o URI de provisionamento TOTP sem erro

Você terminou o TOTP no backend, gerou o segredo em base32 e agora precisa entregá-lo ao app do usuário. O Authenticator não lê um segredo solto: ele espera uma string no formato otpauth://totp/, com o rótulo da conta e os parâmetros na query. Basta esquecer o issuer ou deixar o e-mail sem escapar para o app importar a conta com nome errado, ou recusar a importação sem explicar o motivo.

O rótulo aqui é montado como issuer:conta, cada parte passando por percent-encoding separadamente, e o issuer aparece de novo como parâmetro. Não é redundância boba: apps antigos leem o prefixo do rótulo, apps novos preferem o parâmetro, e o padrão do Google recomenda os dois. O secret é validado só quanto ao alfabeto base32 (A-Z, 2-7 e =), com espaços removidos e tudo em maiúsculas. Não há conferência de comprimento nem de checksum.

A página devolve o texto do URI, não desenha o QR code: copie a string e jogue em um gerador de QR quando for exibir na tela de cadastro. Antes disso, confira que o segredo é exatamente o que o servidor persistiu, e troque o valor de exemplo JBSWY3DPEHPK3PXP, que é público e aparece em toda documentação. O script não faz nenhuma requisição: a montagem acontece no seu navegador, e o segredo nunca sai dele.

Perguntas frequentes

Preciso repetir o issuer no rótulo e na query?
Sim, e é o que a ferramenta faz. Clientes antigos leem o prefixo do rótulo; clientes atuais leem o parâmetro issuer. Manter os dois iguais evita conta duplicada na lista do app.
Posso usar SHA256 ou códigos de 8 dígitos?
O URI aceita, e você escolhe nos seletores. Só que vários apps ignoram algorithm, digits e period e assumem SHA1, 6 dígitos e 30 segundos. Teste com o app que seus usuários realmente usam antes de mudar o padrão.
A ferramenta gera o QR code do segredo?
Não. Ela produz o texto otpauth:// pronto para virar QR em qualquer gerador. A separação é proposital: o URI é o dado, o QR é só um jeito de transportá-lo.

Ferramentas Relacionadas