Closed diagutierrezro closed 1 month ago
Se comienzan los ajustes descritos iniciando con la corrección respectiva al guardado de la firma y las llaves en la tabla de documentos. Por lo tanto se realiza dicha corrección:
Inicialmente en documentos se guardan los metadatos que vienen con el documento, posteriormente se realiza la firma y dicho método retorna un diccionario que es el siguiente:
Dicho objeto se guarda en la variable firma_electronica y posteriormente es esa variable la que se agrega a los metadatos que posteriormente son actualizados en la tabla de documentos por lo que se procede a modificar ese diccionario para que no agregue la firma y las llaves al registro de la tabla de documentos (obviamente procurando que si lo haga para la tabla de firma electrónica).
Por lo tanto la corrección implementada es la siguiente:
Sin embargo se generaba un error producido por un cambio anterior con el propósito de quitar la llave privada de la respuesta de la API firma electrónica el cual era el siguiente:
Por lo tanto al no haber llaves ahora en los metadatos genera un error por lo que se quita dicho cambio para dejar el ajuste realizado a la variable firma_electronica. Por tanto en la base de datos ahora quedan los registros de la siguiente manera:
Se realiza la clonación del repositorio de documentos CRUD y se inicia el análisis para la implementación de los cambios en los metadatos de los métodos de obtención de información de la BD.
Sin embargo no se puede probar directamente ya que se requieren las credenciales de conexión para que la API pueda rescatar info de la base de datos, así que queda pendiente ese apartado.
Se ajustan los endpoints en firma electrónica modificando el namespace que maneja la construcción de los enpoints:
Quedando de la siguiente manera:
Así mismo en el cliente de verificación se modificó el firmaElectronicaHelper para que apunte al nuevo endpoint actualizado
También en el cliente de evaluación se ajustó el endpoint en firmaElectronicaService:
En cuanto al CRUD se sigue trabajando en ello lo cual queda pendiente de este Issue
Se comienza a implementar el ajuste de documentos CRUD:
Cuando se hacía una consulta a getOne o getAll de firmaElectrónica en documentos CRUD se traen las llaves tanto en la clave de "Llaves" como en los metadatos de la tabla de documentos que se adjunta a la respuesta, por lo tanto para quitar la llave privada de las respuestas se debe quitar de estas dos claves del JSON de las respuestas:
Para el getOne de firma electrónica se implementa un Unmarshal que convierte el String de las llaves a un mapa y se manipula eliminando la clave llave privada y se vuelve a reasignar el json como string con marshal al campo de la estructura correspondiente:
A continuación se edita el modelo de firma electrónica de get One para quitar la llave privada
Luego se edita el controlador para quitar la clave de los metadatos (de existir):
Dando como resultado la correcta ausencia de la clave tanto en las llaves como en los metadatos de la consulta getOne:
Luego de esto se modifica el modelo de firma electrónica de getAll para eliminar la clave de llave privada:
Dando como resultado la eliminación de la llave privada de las llaves:
Sin embargo aún no se ha podido eliminar de los metadatos (de existir):
Se sigue trabajando en ello por lo que queda pendiente este asunto.
Se toma la decisión de dejar implementados los cambios realizados el día anterior ya que el pendiente se sale del alcance por motivos de que ya no se guardarán las llaves privadas en los metadatos por lo tanto para los nuevos registros el sistema cumplirá su función correctamente ya que se cumplió el propósito de mantener oculta esa información en las consultas de firma electrónica
Se prueba también el proceso de firmado y todo funciona:
Y se prueba la verificación:
Muy buen trabajo Andres.
Se requiere realizar ajustes a los sistemas una vez realizadas las pruebas de carga y seguridad según lo encontrado en el informe, se iniciará con la eliminación de la información de la firma electrónica (llaves publica y privada y firma electrónica) en la tabla documento ya que esta información se duplica en la tabla de firma_electronica que es donde debería estar.
Posterior a esto se debe modificar el CRUD para que las peticiones http que se hagan a la tabla firma electrónica no retornen la información de la llave privada por cuestiones de seguridad (esta tarea se confirmará con Maria Fernanda para asegurarse de que este es el correcto proceder).
Finalmente se debe realizar el ajuste de los endpoint de firma electrónica para que no tenga "firmaelectronica" al inicio de los endpoints, ejemplo, actualmente el endpoint de verificación es firma_electronica/verify_, debe quedar unicamente verify. Una vez se haga este ajuste se deben actualizar los cliente de verificación y evaluación para que los endpoint coincidan.
Sub Tareas
Criterios de aceptación
Requerimientos
No aplica
Definition of Ready - DoR
Definition of Done - DoD - Desarrollo