2.0 KiB
2.0 KiB
Sistema de Tokens
Descripción
El sistema de tokens permite autenticar las requests de facturas sin necesidad de pasar la contraseña del certificado en cada request.
Flujo de Uso
1. Obtener Clave Pública
curl http://localhost:6789/api/v1/auth/public-key
Response:
{"public_key": "base64..."}
2. Descifrar clave pública
El cliente debe descifrar la clave pública RSA (codificada en base64) y usarla para cifrar la contraseña.
3. Registrar Certificado
curl -X POST http://localhost:6789/api/v1/auth/register \
-H "Content-Type: application/json" \
-d '{
"cert_name": "personal",
"cert_path": "C:/ruta/al/cert.p12",
"password_encrypted": "base64_cifrada"
}'
Response:
{
"success": true,
"cert": {
"subject": "...",
"days_until_expiry": 816
},
"token": "A1B2C3D4E5F6..."
}
4. Usar Token en Facturas (futuro)
El token se pasados en el header Authorization:
curl -X POST http://localhost:6789/api/v1/facturas \
-H "Content-Type: application/json" \
-H "Authorization: Bearer A1B2C3D4E5F6..." \
-d '{...}'
Almacenamiento
Los tokens se almacenan en memoria (map[string]*Certificate) junto con:
- ID del certificado
- Ruta al archivo .p12
- Contraseña descifrada
Seguridad
- Los tokens son strings aleatorios de 32 bytes codificados en hex mayúscula
- Solo se almacena en memoria (se pierde al reiniciar la API)
- La contraseña nunca se expone en responses
- El token permite ejecutar operaciones con el certificado registrado
Consideraciones
- Sesiones efímeras: Al reiniciar la API se pierden los tokens
- Un token por certificado: Si registras el mismo cert, se genera nuevo token
- Varios certificados: Se puede registrar más de un certificado, cada uno con su token
Estado Actual
Actualmente los tokens se generan pero no se usan en las requests de facturas. El sistema usa el certificado registrado directamente.