Docs/ Segurança/ Autenticação e 2FA

Autenticação e 2FA

Proteja sua instância sh0 com login por senha ou Google OAuth, e adicione uma camada extra de proteção com autenticação de dois fatores.

Métodos de Login

O sh0 suporta dois métodos de autenticação. Ambos produzem um token JWT que é usado para todas as requisições subsequentes à API e acesso ao painel.

Autenticação por Senha

O método de autenticação padrão. Na primeira instalação, o sh0 cria uma conta de administrador com credenciais padrão exibidas nos logs do servidor. Você deve alterar a senha imediatamente após o primeiro login.

Terminal
curl -X POST https://your-server:9000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your-password"
  }'

A resposta contém um token JWT válido por 30 dias:

Response
{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "user": {
      "id": "usr_abc123",
      "email": "[email protected]",
      "role": "admin"
    }
  }
}
Página de login do sh0 com campos de e-mail e senha

Google OAuth

Para usuários do sh0 Cloud, o Login com Google está disponível como método de login. Isso usa o fluxo OAuth 2.0 do Google com verificação de token ID via JWKS.

  1. Clique em Entrar com Google na página de login.
  2. Autentique-se com sua conta Google.
  3. O sh0 verifica o token ID e cria ou vincula sua conta.
Página de login com botão de Login com Google
Note
Para instâncias auto-hospedadas, o Google OAuth requer a configuração de um projeto Google Cloud com credenciais OAuth. Veja Configurações → Autenticação para inserir seu Client ID e Client Secret.

Habilitando Autenticação de Dois Fatores

A autenticação de dois fatores (2FA) adiciona uma camada extra de segurança exigindo uma senha de uso único baseada em tempo (TOTP) além das suas credenciais normais.

  1. Navegue até Configurações → Segurança no painel.
  2. Clique em Habilitar 2FA.
  3. Escaneie o QR code com um aplicativo autenticador (Google Authenticator, Authy, 1Password, etc.).
  4. Insira o código de 6 dígitos do seu aplicativo autenticador para verificar a configuração.
  5. Salve seus códigos de backup em um local seguro.
Tela de configuração de 2FA mostrando QR code e campo de verificação

Uma vez habilitado, todo login exigirá o código TOTP de 6 dígitos após inserir seu e-mail e senha.

Terminal
curl -X POST https://your-server:9000/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "[email protected]",
    "password": "your-password",
    "totp_code": "123456"
  }'
Warning
Se você perder acesso ao seu aplicativo autenticador e aos seus códigos de backup, precisará acessar o servidor diretamente e resetar o 2FA via CLI: sh0 auth reset-2fa --email [email protected]

Códigos de Backup

Quando você habilita o 2FA, o sh0 gera 10 códigos de backup de uso único. Cada código pode ser usado uma vez no lugar de um código TOTP se você perder acesso ao seu aplicativo autenticador.

Example Backup Codes
a1b2c3d4e5
f6g7h8i9j0
k1l2m3n4o5
p6q7r8s9t0
u1v2w3x4y5
z6a7b8c9d0
e1f2g3h4i5
j6k7l8m9n0
o1p2q3r4s5
t6u7v8w9x0
Danger
Armazene seus códigos de backup em um local seguro e offline (gerenciador de senhas, papel impresso em um cofre). Esses códigos são seu único método de recuperação se perder seu dispositivo autenticador. Eles são mostrados apenas uma vez durante a configuração do 2FA.

Você pode regenerar códigos de backup a qualquer momento em Configurações → Segurança → Regenerar Códigos de Backup. Isso invalida todos os códigos gerados anteriormente.

Alterando Sua Senha

Para alterar sua senha:

  1. Vá para Configurações → Perfil.
  2. Clique em Alterar Senha.
  3. Insira sua senha atual e a nova senha.
  4. Se o 2FA estiver habilitado, será solicitado um código TOTP.
Formulário de alteração de senha nas configurações de perfil

Senhas são hasheadas com Argon2id antes do armazenamento. O sh0 impõe um comprimento mínimo de senha de 8 caracteres.

Tip
Após alterar sua senha, todas as sessões existentes permanecem válidas. Para invalidar todas as sessões, use o botão Revogar Todas as Sessões nas configurações de Segurança.

Gerenciamento de Sessão

O sh0 usa tokens JWT para gerenciamento de sessão. Tokens são válidos por 30 dias por padrão. Você pode visualizar e gerenciar sessões ativas pelo painel.

Lista de sessões ativas mostrando navegador, localização e última atividade

No painel de Sessões, você pode:

  • Ver sessões ativas: Ver todos os dispositivos e navegadores onde você está logado.
  • Revogar uma sessão: Invalidar uma sessão específica (ex.: se você ficou logado em um computador compartilhado).
  • Revogar todas as sessões: Sair de todos os lugares. Útil se suspeitar que suas credenciais foram comprometidas.
Terminal
curl -X DELETE https://your-server:9000/api/auth/sessions \
  -H "Authorization: Bearer YOUR_TOKEN"