Saltar a contenido

Caso de uso: configurar y usar una TSA

Objetivo: dar de alta un sello de tiempo (Time Stamp Authority), verificarlo, y usarlo al firmar un documento.

1. Crear la configuración TSA

curl -X POST http://localhost:8080/api/tsa \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -H "Content-Type: application/json" \
  -d '{
    "alias": "tsa-prd",
    "url": "https://tsa.proveedor.com/rfc3161",
    "user": "usuario_tsa",
    "pass": "clave_tsa",
    "isDefault": true
  }'
{
  "id": 3,
  "alias": "tsa-prd",
  "url": "https://tsa.proveedor.com/rfc3161",
  "isDefault": true,
  "status": "ACTIVE",
  "lastValidatedAt": null,
  "validationCount": 0,
  "lastValidationOk": null,
  "created": "2026-07-14T10:00:00.000+00:00",
  "updated": "2026-07-14T10:00:00.000+00:00"
}

Al marcarla isDefault: true, cualquier otra TSA activa marcada como default queda automáticamente desmarcada.

2. Validar la configuración

Ejecuta una solicitud RFC 3161 real contra la URL configurada, para confirmar que la URL y las credenciales son correctas antes de usarla en producción.

curl -X POST http://localhost:8080/api/tsa/tsa-prd/validate \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..."
{
  "status": "SUCCESS",
  "message": "TSA validated successfully.",
  "errorCode": "TSA_VALID",
  "alias": "tsa-prd",
  "validatedAt": "2026-07-14T10:05:00.000+00:00",
  "validationCount": 1,
  "lastValidationOk": true
}

Si falla, el errorCode indica la causa (ver tabla en TSA — códigos de error de validación), por ejemplo credenciales inválidas (TSA_AUTH_FAILED, 401) o timeout (TSA_TIMEOUT, 408).

3. Firmar un documento usando esta TSA

Usando el alias explícito:

curl -X POST http://localhost:8080/api/doc/sign-by-label \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -F "file=@contrato.pdf;type=application/pdf" \
  -F "dni=12345678" \
  -F "label=FIRMA_AQUI" \
  -F "reason=Aprobación de contrato" \
  -F "typeSigner=1" \
  -F "hasImageSignature=true" \
  -F "useTsa=true" \
  -F "tsaAlias=tsa-prd"

O, como es la única marcada isDefault, omitiendo tsaAlias:

curl -X POST http://localhost:8080/api/doc/sign-by-label \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
  -F "file=@contrato.pdf;type=application/pdf" \
  -F "dni=12345678" \
  -F "label=FIRMA_AQUI" \
  -F "reason=Aprobación de contrato" \
  -F "typeSigner=1" \
  -F "hasImageSignature=true" \
  -F "useTsa=true"

Si no existiera ninguna TSA activa marcada isDefault y se omite tsaAlias, la firma falla con 400 BAD_REQUEST (No default TSA configuration found).

4. Dar de baja la configuración

curl -X DELETE http://localhost:8080/api/tsa/tsa-prd \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..."

Queda con status = DELETED y isDefault = false; ya no aparece en GET /api/tsa ni puede usarse por alias al firmar.