Skip to content

DouDev-SRL/locksky

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Locksky

Sistema de reset de contraseñas automatizado. La idea es simple: un usuario queda bloqueado en algún sistema externo, Locksky verifica su identidad y le avisa al sistema para que ejecute el reset. Sin tocar contraseñas, sin almacenar nada sensible en claro.


Cómo funciona

1. Configurar un destino

Antes de arrancar, hay que registrar a dónde Locksky tiene que avisar cuando se valida un reset. Eso es un webhook: una URL del sistema externo que va a recibir la notificación.

POST /api/webhooks
Authorization: Bearer <token>

{
  "name": "Mi sistema",
  "url": "https://mi-sistema.com/locksky/reset",
  "secret": "clave-para-verificar-la-firma"
}

Con esa secret, Locksky firma cada request con HMAC-SHA256. El sistema externo puede verificar que el llamado es legítimo antes de ejecutar cualquier cosa.

2. Solicitar un reset

Cuando alguien necesita recuperar el acceso, se hace una solicitud con su email. Locksky genera un OTP de 6 dígitos y se lo manda por mail. El OTP expira en 10 minutos.

POST /api/reset/request

{
  "email": "usuario@empresa.com"
}

Respuesta: { "resetRequestId": "..." }

3. Validar la identidad

El usuario ingresa el OTP que recibió. Si es correcto y no expiró, Locksky genera un token temporal cifrado con AES-256-GCM y lo dispara al webhook registrado. El sistema externo recibe el token, verifica la firma y ejecuta el reset.

POST /api/reset/validate

{
  "resetRequestId": "...",
  "otp": "123456"
}

Si todo salió bien, el usuario recibe un mail de confirmación.


Endpoints

Método Ruta Auth Descripción
POST /api/auth/login Login, devuelve JWT
POST /api/reset/request Solicita un reset, manda OTP por mail
POST /api/reset/validate Valida el OTP y dispara el webhook
GET /api/webhooks JWT Lista los endpoints activos
POST /api/webhooks JWT Registra un nuevo endpoint
DELETE /api/webhooks/{id} JWT Desactiva un endpoint

Lo que hace el sistema externo

Exponer un endpoint HTTP que:

  1. Reciba el POST de Locksky
  2. Verifique el header X-Locksky-Signature contra el body usando la secret configurada
  3. Use el token recibido para ejecutar el reset en su sistema

Locksky no sabe cómo cada sistema resetea contraseñas. Eso es problema del sistema externo.


Setup rápido

# clonar y pararse en la raíz
cd Locksky

# configurar la base y las claves en appsettings.json
# (connection string, JWT key, SMTP, encryption key)

# aplicar migraciones
dotnet ef database update --project src/Locksky.Infrastructure

# correr la API
dotnet run --project src/Locksky.API

Documentación interactiva disponible en http://localhost:5000/scalar/v1 cuando corre en Development.


Stack

.NET 10 · PostgreSQL · Entity Framework Core · MailKit · JWT · AES-256-GCM · HMAC-SHA256

About

mvp de sistema de gestion de passwords.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages