Conta, login e dispositivos

Para: Dev · Fin · Adm — Conferido em 2026-10-19.

Toda pessoa que usa o painel entra pela página de login do Dracma (auth.), que é uma aplicação separada do painel. Esta página mostra como criar a conta, os métodos de login, a duração da sessão, a confirmação de identidade para ações sensíveis, os fatores, a recuperação de acesso e o controle de dispositivos.

O que é

  • O login mora em auth. (veja Ambientes e hosts). O painel em painel. não pede senha: ele redireciona você ao auth. e volta com uma sessão, pelo protocolo OIDC (código de autorização com PKCE).
  • Os tokens ficam só no servidor do painel. O navegador recebe um cookie opaco, HttpOnly.
  • O painel exige dois fatores de login e um fator forte (passkey ou app autenticador) para ações sensíveis, como votar, aprovar, revelar segredo ou dado pessoal e mudar configuração. O painel e a API conferem de novo, uma depois da outra, cada ação sensível.
  • A identidade de uma pessoa é um identificador interno imutável (um UUID). O e-mail não é identidade: uma pessoa pode ter vários e-mails, e trocar o e-mail não muda quem ela é.

Quando usar

Leia antes do seu primeiro acesso e quando for configurar a segurança da sua conta. Quem administra a equipe lê também Equipe e papéis.

Como funciona

Criar a conta (primeiro acesso)

Quem foi convidado cria a conta pela página Criar conta (/cadastro), usando o mesmo e-mail do convite:

  1. Etapa 01, e-mail: informe o e-mail do convite.
  2. Etapa 02, senha: escolha uma senha de 10 ou mais caracteres que não apareça em vazamentos conhecidos, ou escolha Continuar sem senha para entrar só com código por e-mail.
  3. Etapa 03, código por e-mail: digite o código de 6 dígitos que chegou ao e-mail.
  4. A conta só nasce quando o e-mail é confirmado pelo código. O convite não cria conta e não dá acesso: o acesso vale quando você o aceita (veja abaixo).
  5. Depois do cadastro, abra Conta e cadastre uma passkey ou um app autenticador. Sem fator forte você não consegue aprovar nem revelar nada no painel.

Um e-mail já verificado em outra conta recebe "Este e-mail já tem conta. Use Entrar".

Aceitar o convite do dono do tenant

O convite é o único caminho de entrada para o primeiro administrador e para cada pessoa da equipe. Quem convida é o Dracma (para o dono do tenant) ou um administrador da sua empresa (para a equipe). O convite não cria conta e não concede nada: só o aceite concede acesso. A pessoa convidada recebe um e-mail com um link do tipo https://auth.<domínio>/convite#…:

  1. O link é de uso único e vale 72 horas. O código do convite vai depois do #, então não aparece em logs de servidor e a página o apaga do endereço assim que abre.
  2. Entre ou crie a conta com o e-mail do convite. Se a conta já existe com outro e-mail, adicione o e-mail do convite e confirme com o código.
  3. O aceite exige pelo menos dois fatores e um fator forte recente: passkey, ou senha mais app autenticador. Conta que só usa código por e-mail precisa antes cadastrar passkey ou app autenticador.
  4. Ao aceitar, a página leva ao painel, que pede mais uma confirmação com fator forte e só então concede o acesso. Convite de dono torna a conta dona do tenant. Convite de equipe concede o pacote só na operação para a qual foi emitido.

Quem criou o convite não pode aceitá-lo, e contas com papel de plataforma do Dracma não aceitam. O Dracma não vê o link: ele só vai por e-mail, mesmo no hml.

Resposta do convite Significado
link não encontrado ou malformado digitação errada ou convite inexistente (a mesma resposta para os dois casos)
convite expirado, já usado ou revogado peça o reenvio ao Dracma. Cada reenvio invalida o link anterior (até 5, com 60 s entre eles)
e-mail diferente a conta não tem o e-mail do convite verificado. Se a conta já existe com outro e-mail, adicione e confirme o e-mail do convite em Adicionar um segundo e-mail e aceite de novo
fatores insuficientes cadastre passkey ou app autenticador e repita

Convite de equipe

O convite de equipe segue o mesmo caminho e as mesmas regras do convite do dono. Muda o que ele concede e quem confere:

  • O pacote vale só na operação em que a pessoa foi convidada. Convite da operação A não dá acesso à operação B.
  • Se quem convidou perder, antes do aceite, o direito de gerir usuários daquela operação, o aceite é recusado (issuer_revoked). Peça a um administrador que ainda tenha o direito para convidar de novo.
  • Quem convidou não aceita o próprio convite, e contas com função do Dracma não aceitam.
  • O painel não revela a terceiros que um convite existe: quem não é a conta que usou o link recebe "não encontrado".
  • O aceite é repetível: abrir de novo o mesmo link com a mesma conta, depois de aceito, mostra o mesmo resultado sem conceder nada a mais.

Entrar

O login tem três etapas:

  1. Etapa 01, e-mail. Marque Confiar neste dispositivo (sessão de 90 dias) se o aparelho é seu.
  2. Etapa 02, 1º método.
  3. Etapa 03, 2º método.

Uma conta com senha precisa de senha mais código por e-mail, em qualquer ordem. Uma passkey sozinha conclui o login e já vale como fator forte. A resposta é a mesma para e-mail existente e inexistente, para não revelar quem tem conta.

Métodos oferecidos

Método O que é
Passkey Digital, rosto ou chave de segurança do dispositivo. Exige verificação do usuário. É um fator forte
Senha A senha da conta, com 10 ou mais caracteres
Código por e-mail 6 dígitos, válidos por 10 minutos, com 5 tentativas. O reenvio espera 30 s e cada e-mail recebe até 5 códigos por hora
App autenticador Código de 6 dígitos de um app TOTP. É um fator forte
Código de recuperação Um dos 10 códigos de uso único que você guardou

Não disponível

O Dracma não envia código por SMS nem por ligação, e não aceita telefone como identificador ou fator. A rota de SMS responde 404. Use passkey, app autenticador ou código por e-mail.

Sessão

  • A sessão dura 7 dias deslizantes: cada uso renova o prazo.
  • Com Confiar neste dispositivo, a sessão dura 90 dias.
  • O token de acesso dura 10 minutos e é renovado em segundo plano pelo servidor do painel. Você não é "chutado" a cada 15 minutos.
  • Um login de IP novo ou de dispositivo novo é tratado como mais arriscado: quem tem fator forte precisa apresentá-lo além de senha e código.

Confirmação de identidade (step-up)

Ações sensíveis pedem que você tenha confirmado a identidade com um fator forte nos últimos 5 minutos. São elas, entre outras: criar tenant ou operação, pedir ou revelar chave, mudar IPs ou webhook, rotacionar segredo, convidar ou remover pessoas, votar em pedidos, revelar dado pessoal e exportar relatórios.

  • Quando falta a confirmação, a tela mostra Confirmar identidade agora. Ela leva ao login, pede o fator forte e volta para a tela em que você estava.
  • Se a conta ainda não tem fator forte, o código por e-mail confirma que é você e o login oferece Cadastrar passkey ou Cadastrar app autenticador na hora.
  • A API repete a conferência: mesmo que alguém adultere a tela, a ação é recusada com step_up_required.

Fatores, códigos de recuperação e e-mails

A página Conta mostra:

  • seus e-mails e se cada um está verificado;
  • se a conta tem senha;
  • os fatores fortes cadastrados (passkey e app autenticador), com a data. Você cadastra e remove fatores aqui;
  • os códigos de recuperação, 10 de uso único, mostrados uma vez quando gerados.

Regras:

  • Mudar fator, e-mail, senha ou códigos exige verificar de novo com um fator diferente do que está sendo mudado, no maior nível disponível (passkey, depois app autenticador, depois código por e-mail), nos últimos 5 minutos.
  • Toda mudança avisa todos os e-mails verificados da conta.
  • Remover o último fator forte não é imediato: a remoção fica agendada por 24 horas e pode ser cancelada pelo link do aviso. Isso impede que quem roubou uma sessão apague seu fator.
  • Pessoas que aprovam dinheiro precisam ter pelo menos um fator forte. A tela avisa: "Eles são exigidos para aprovar pagamentos no painel".

Adicionar um segundo e-mail

Use quando a sua conta já existe com outro e-mail e o convite chegou em um endereço novo, ou quando você quer ter mais de um e-mail de entrada. Abra Conta, depois Adicionar ou remover e-mails (/conta/emails):

  1. Informe o novo e-mail e escolha Adicionar e enviar código. A tela pede antes uma confirmação recente com um fator diferente do que está sendo mudado.
  2. Digite o código de 6 dígitos que chegou ao novo endereço. Ele vale 10 minutos, tem 5 tentativas e o reenvio espera 30 s.
  3. Com o código certo, o e-mail fica verificado e vinculado à sua conta. Você pode entrar com qualquer e-mail verificado. Todos os e-mails verificados recebem um aviso, com o endereço novo parcialmente oculto.
  4. Volte ao link do convite e aceite.

Regras:

  • O e-mail nunca é a identidade: a conta continua a mesma, com o mesmo identificador interno.
  • A tela responde igual quando o endereço está livre e quando ele já é verificado em outra conta. Nesse segundo caso nenhum código é enviado, nem ao dono do endereço, e nada é vinculado: você só descobre o problema porque o código nunca chega. Isso impede que alguém use o formulário para descobrir quem tem conta. Quando isso acontecer, use um e-mail que seja seu.
  • Até 10 adições por hora por conta e até 10 por hora para o mesmo endereço, vindas de qualquer conta.
  • Remover também pede confirmação recente. O último e-mail verificado não pode ser removido.
  • Fora da produção, o endereço novo precisa aceitar e-mail dentro das regras do ambiente (veja "E-mail no hml" abaixo); endereços de teste não recebem e-mail.

Dispositivos conectados

A seção Dispositivos conectados lista cada sessão com o nome do navegador, o IP, o último uso e as marcas este e confiável.

  • Encerrar derruba uma sessão que não seja a atual.
  • Sair de todos os dispositivos encerra todas, inclusive a atual.
  • Sair deste encerra só a sessão atual.

Sair (logout)

Sair no painel é irreversível: apaga a sessão no servidor do painel, revoga o token de renovação, encerra a sessão no login e bloqueia os tokens de acesso ainda vivos daquela sessão. Não basta apagar o cookie para voltar: é preciso entrar de novo com os fatores.

Exemplos

sequenceDiagram participant N as Navegador participant P as painel. participant A as auth. (login) N->>P: abre o painel P-->>N: redireciona ao login (código de autorização + PKCE) N->>A: e-mail, 1º método, 2º método A-->>N: volta ao painel com um código N->>P: entrega o código P->>A: troca o código por tokens (no servidor) P-->>N: cookie opaco, tokens ficam no servidor

Erros e casos de borda

Recuperar o acesso

Há dois caminhos, ambos com força igual ou maior que a do login:

  1. Com código de recuperação: use um dos 10 códigos mais um código por e-mail.
  2. Sem código: peça a recuperação com o código por e-mail. Todos os e-mails da conta recebem um aviso, que você pode cancelar. Depois de 24 horas, um novo código por e-mail conclui a recuperação.

A sessão que sai de uma recuperação não vale como fator forte: ações sensíveis ainda pedem passkey ou app autenticador.

Bloqueios e limites

  • Código por e-mail: 5 tentativas, depois o código morre. Reenvio a cada 30 s e até 5 códigos por hora por e-mail.
  • Senha errada várias vezes seguidas bloqueia a conta por alguns minutos. Credencial errada, conta inexistente e conta bloqueada mostram a mesma resposta e levam o mesmo tempo.
  • Muitos pedidos do mesmo IP ou da mesma conta levam a "Muitas tentativas. Aguarde alguns minutos".

Mensagens do login e do cadastro

Mensagem O que significa O que fazer
"Digite um e-mail válido." formato inválido corrija
"O tempo para entrar expirou. Comece de novo." o fluxo passou de 15 minutos recomece
"Código incorreto ou expirado." código errado, vencido ou já usado peça outro
"E-mail, senha ou código não conferem." credencial errada tente de novo
"Muitas tentativas. Aguarde alguns minutos." limite de tentativas espere
"Este e-mail já tem conta. Use Entrar." e-mail já verificado em outra conta entre
"Senha fraca: use 10 ou mais caracteres que não apareçam em vazamentos conhecidos." senha fora da política escolha outra
"Esta senha apareceu em vazamentos conhecidos. Escolha outra." senha vazada escolha outra
"Não conseguimos enviar o código agora. Tente de novo em instantes." o envio de e-mail falhou tente de novo
"Este e-mail já está na sua conta." o endereço já é seu nada a fazer
"Muitas tentativas de adicionar e-mail. Tente de novo mais tarde." passou do teto por hora espere uma hora
"Aguarde um instante antes de pedir outro código." / "Muitos códigos pedidos para este endereço. Tente mais tarde." reenvio cedo demais ou teto por hora espere
"Muitas tentativas de código. Peça um código novo." 5 códigos errados peça outro código
"Este endereço não pode receber e-mail neste ambiente." fora da produção, o endereço é de domínio de teste ou de terceiro não liberado use um endereço real e permitido
"Você não pode remover o último e-mail verificado da conta." a conta ficaria sem e-mail adicione outro antes

E-mail no hml

No hml, o código de login e os convites chegam por e-mail de verdade a qualquer endereço, exceto os de domínios de teste (test.dracma.cfd, .test, .invalid, .example), que nunca recebem e-mail. Use no hml o e-mail real de uma pessoa real. Contas de teste automatizado devem usar endereço de teste. Veja Dados de teste.

Veja também