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.