VerifactuMidAPI/documentacion/tokens.md

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

  1. Sesiones efímeras: Al reiniciar la API se pierden los tokens
  2. Un token por certificado: Si registras el mismo cert, se genera nuevo token
  3. 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.