Docs/ Seguridad/ Autenticación y 2FA

Autenticación y 2FA

Protege tu instancia de sh0 con inicio de sesión por contraseña u OAuth de Google, y agrega una capa adicional de protección con autenticación de dos factores.

Métodos de inicio de sesión

sh0 admite dos métodos de autenticación. Ambos producen un token JWT que se usa para todas las solicitudes API y acceso al panel de control posteriores.

Autenticación por contraseña

El método de autenticación predeterminado. En la primera instalación, sh0 crea una cuenta de administrador con credenciales predeterminadas mostradas en los registros del servidor. Debes cambiar la contraseña inmediatamente después del primer inicio de sesión.

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

La respuesta contiene un token JWT válido por 30 días:

Response
{
  "data": {
    "token": "eyJhbGciOiJIUzI1NiIs...",
    "user": {
      "id": "usr_abc123",
      "email": "[email protected]",
      "role": "admin"
    }
  }
}
Página de inicio de sesión de sh0 con campos de correo electrónico y contraseña

OAuth de Google

Para usuarios de sh0 Cloud, el inicio de sesión con Google está disponible como método de autenticación. Esto usa el flujo OAuth 2.0 de Google con verificación de token de ID vía JWKS.

  1. Haz clic en Iniciar sesión con Google en la página de inicio de sesión.
  2. Autentícate con tu cuenta de Google.
  3. sh0 verifica el token de ID y crea o vincula tu cuenta.
Página de inicio de sesión con botón de inicio de sesión con Google
Note
Para instancias autoalojadas, OAuth de Google requiere configurar un proyecto de Google Cloud con credenciales OAuth. Ve a Configuración → Autenticación para ingresar tu Client ID y Client Secret.

Habilitar autenticación de dos factores

La autenticación de dos factores (2FA) agrega una capa adicional de seguridad al requerir una contraseña de un solo uso basada en tiempo (TOTP) además de tus credenciales habituales.

  1. Navega a Configuración → Seguridad en el panel de control.
  2. Haz clic en Habilitar 2FA.
  3. Escanea el código QR con una aplicación de autenticación (Google Authenticator, Authy, 1Password, etc.).
  4. Ingresa el código de 6 dígitos de tu aplicación de autenticación para verificar la configuración.
  5. Guarda tus códigos de respaldo en un lugar seguro.
Pantalla de configuración 2FA mostrando código QR y campo de verificación

Una vez habilitada, cada inicio de sesión requerirá el código TOTP de 6 dígitos después de ingresar tu correo electrónico y contraseña.

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
Si pierdes acceso a tu aplicación de autenticación y a tus códigos de respaldo, necesitarás acceder al servidor directamente y restablecer la 2FA vía la CLI: sh0 auth reset-2fa --email [email protected]

Códigos de respaldo

Cuando habilitas 2FA, sh0 genera 10 códigos de respaldo de un solo uso. Cada código puede usarse una vez en lugar de un código TOTP si pierdes acceso a tu aplicación de autenticación.

Example Backup Codes
a1b2c3d4e5
f6g7h8i9j0
k1l2m3n4o5
p6q7r8s9t0
u1v2w3x4y5
z6a7b8c9d0
e1f2g3h4i5
j6k7l8m9n0
o1p2q3r4s5
t6u7v8w9x0
Danger
Almacena tus códigos de respaldo en un lugar seguro y sin conexión (administrador de contraseñas, papel impreso en una caja fuerte). Estos códigos son tu único método de recuperación si pierdes tu dispositivo autenticador. Se muestran solo una vez durante la configuración de 2FA.

Puedes regenerar los códigos de respaldo en cualquier momento desde Configuración → Seguridad → Regenerar códigos de respaldo. Esto invalida todos los códigos generados previamente.

Cambiar tu contraseña

Para cambiar tu contraseña:

  1. Ve a Configuración → Perfil.
  2. Haz clic en Cambiar contraseña.
  3. Ingresa tu contraseña actual y la nueva contraseña.
  4. Si la 2FA está habilitada, se te pedirá un código TOTP.
Formulario de cambio de contraseña en la configuración del perfil

Las contraseñas se hashean con Argon2id antes de almacenarse. sh0 exige una longitud mínima de contraseña de 8 caracteres.

Tip
Después de cambiar tu contraseña, todas las sesiones existentes permanecen válidas. Para invalidar todas las sesiones, usa el botón Revocar todas las sesiones en la configuración de Seguridad.

Gestión de sesiones

sh0 usa tokens JWT para la gestión de sesiones. Los tokens son válidos por 30 días por defecto. Puedes ver y administrar las sesiones activas desde el panel de control.

Lista de sesiones activas mostrando navegador, ubicación y última actividad

Desde el panel de Sesiones, puedes:

  • Ver sesiones activas: Ver todos los dispositivos y navegadores donde tienes sesión iniciada.
  • Revocar una sesión: Invalidar una sesión específica (por ejemplo, si dejaste tu sesión abierta en una computadora compartida).
  • Revocar todas las sesiones: Cerrar sesión en todas partes. Útil si sospechas que tus credenciales fueron comprometidas.
Terminal
curl -X DELETE https://your-server:9000/api/auth/sessions \
  -H "Authorization: Bearer YOUR_TOKEN"