Pular para o conteúdo
⚙️ HOW-TO

Configurar MFA por role/tenant

Exija autenticação de múltiplos fatores para admins sem impactar usuários comuns.

MFA para os usuários do seu app

O SuperDB oferece TOTP (Google Authenticator, 1Password, Authy) pronto no SDK. Você decide quem precisa ativar — a regra de negócio é sua.

ts — cadastrar um fator TOTP
// 1) gera o segredo e o QR para o usuário escanear
const { data } = await db.auth.mfa.enroll({ factor_type: 'totp' })
// data traz o secret/otpauth URI — renderize como QR code

// 2) confirme com o código de 6 dígitos que o app mostrou
await db.auth.mfa.verify({ factor_id: data.id, code: '123456' })

// 3) consulte os fatores ativos do usuário logado
const { data: f } = await db.auth.mfa.factors()

Guarde no seu banco quem já ativou (ex.: uma coluna em profiles) e use isso para exigir MFA nas telas sensíveis do seu produto.

Exigir MFA por role (ainda não é self-serve)

⚠️

Forçar MFA no nível da plataforma para determinadas roles não é configurável pelo dashboard nem por API hoje. O padrão em vigor é: MFA opcional, bloqueio de força bruta após 10 tentativas por 15 minutos. Se o seu contrato exige enforcement por role, fale com o suporte — é habilitado caso a caso.

Enquanto isso, o enforcement fica no seu app: ao detectar que o usuário tem uma role sensível e não tem fator ativo, redirecione para a tela de cadastro de MFA antes de liberar a área restrita.

MFA na sua conta SuperDB

É outra coisa: protege o seu login no app.superdb.com.br (quem administra os projetos), não os usuários do seu app. Configure no menu da sua conta.

Troubleshooting

Usuário perdeu o dispositivo e não tem recovery codes

Como você guarda no seu banco quem tem MFA, o caminho é: remova o fator do usuário pela sua própria área administrativa (chamando o SuperDB com a sua service key a partir do backend) e peça que ele cadastre de novo. Nunca exponha esse fluxo no cliente.

Código sempre inválido

TOTP depende de relógio: confira se a hora do celular está no automático. Uma diferença maior que 30 segundos já invalida os códigos.

Essa página ajudou?