Herramientas de usuario

Herramientas del sitio


ada:howto:sicoferp:factory:new-migracion-sicoferp:front:configuracion-libreria-encriptacion

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:configuracion-libreria-encriptacion [2025/01/29 16:57]
192.168.175.192
ada:howto:sicoferp:factory:new-migracion-sicoferp:front:configuracion-libreria-encriptacion [2025/03/18 14:14] (actual)
192.168.175.219
Línea 1: Línea 1:
 ====== Configuración librería encriptación ====== ====== Configuración librería encriptación ======
  
-Esta librería funciona como un repositorio centralizado de componentes,​ permitiendo compartir ​reutilizar elementos visuales ​de manera consistente en todas las aplicaciones. Al mantener un sistema de diseño unificadogarantiza ​la coherencia visual y mejora ​la eficiencia del desarrollo, reduciendo la duplicación de código ​simplificando el mantenimiento de la interfaz de usuario.+Librería para encriptar ​desencriptar datos de forma seguragarantizando ​la protección de la información transmitida ​recibida.
  
 ===== Uso ===== ===== Uso =====
Línea 9: Línea 9:
   * Instale la librería de npm crypto-js ​  ​[[https://​www.npmjs.com/​package/​crypto-js|Enlace a la librería]]   * Instale la librería de npm crypto-js ​  ​[[https://​www.npmjs.com/​package/​crypto-js|Enlace a la librería]]
  
 +<​code>​
      npm i crypto-js      npm i crypto-js
 +</​code>​
  
   * Crea un archivo **.npmrc** en la raíz del proyecto, el cual va a contener la configuración para instalación de la librería alojada en Nexus Repository.   * Crea un archivo **.npmrc** en la raíz del proyecto, el cual va a contener la configuración para instalación de la librería alojada en Nexus Repository.
  
-  * Agregue la dependencia al archivo **package.json** **(Recuerde verificar la versión actual de la librería)** e instale las dependencias.+  * Agregue la dependencia al archivo **package.json** ​en el bloque "​dependencies" ​**(Recuerde verificar la versión actual de la librería)** e instale las dependencias.
  
 +<​code>​
    "​crypto-util-library":​ "​http://​10.1.40.130:​8081/​repository/​npm-hosted/​crypto-util-library/​-/​crypto-util-library-1.0.0.tgz"​    "​crypto-util-library":​ "​http://​10.1.40.130:​8081/​repository/​npm-hosted/​crypto-util-library/​-/​crypto-util-library-1.0.0.tgz"​
 +</​code>​
  
   * Crea un servicio para centralizar y gestionar la encriptación y desencriptación de datos, utilizando los métodos proporcionados por la librería **crypto-util-library**. Esto facilita la reutilización del código y garantiza un manejo seguro y consistente de la información en toda la aplicación.   * Crea un servicio para centralizar y gestionar la encriptación y desencriptación de datos, utilizando los métodos proporcionados por la librería **crypto-util-library**. Esto facilita la reutilización del código y garantiza un manejo seguro y consistente de la información en toda la aplicación.
  
 +<​code>​
       import { CryptoUtil } from '​crypto-util-library';​       import { CryptoUtil } from '​crypto-util-library';​
  
Línea 27: Línea 29:
            ​return this.cryptoUtil.decryptObject(data);​            ​return this.cryptoUtil.decryptObject(data);​
       }       }
 +      ​
       encryptData(data:​ any) {       encryptData(data:​ any) {
            ​return this.cryptoUtil.encryptObject(data);​            ​return this.cryptoUtil.encryptObject(data);​
       }       }
 +</​code>​
  
-  * Configura un **interceptor** encargado de la encriptación y desencriptación de los datos en las solicitudes HTTP. Este interceptor recibe como parámetro un archivo de configuración que permite definir una lista de URLs excluidas, en las cuales no es necesario aplicar estos procesos. De esta manera, se optimiza el rendimiento y se garantiza que solo las comunicaciones sensibles sean protegidas mediante encriptación.+  * Configura un **interceptor** encargado de la encriptación y desencriptación de los datos en las solicitudes HTTP. Este interceptor recibe como parámetro un **archivo de configuración** que permite definir una lista de URLs excluidas, en las cuales no es necesario aplicar estos procesos. De esta manera, se optimiza el rendimiento y se garantiza que solo las comunicaciones sensibles sean protegidas mediante encriptación.
  
-==== Interceptor ​====+  *   ​[[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front:​configuracion-libreria-encriptacion:​interceptor-encriptacion|Interceptor ​]] 
 +  *   ​[[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front:​configuracion-libreria-encriptacion:​archivo-configuracion-interceptor-encriptacion|Archivo de configuración]]
  
-       import { CryptoConfig ​} from '​./​crypto.config'; +  * Realice la configuración del interceptor en el  archivo **app.confi.ts** en el array de providers y asegúrese de pasar el archivo de configuración como parámetro para definir las reglas de encriptación y exclusión de URLs. La implementación debe realizarse de la siguiente manera:: 
-       ​import { CryptoUtilLibraryService ​} from '../services/crypto-util-library.service';+ 
 +<​code>​ 
 +    ​import { cryptoInterceptorInterceptor ​} from './​shared/​interceptors/crypto-interceptor.interceptor'; 
 +    import { cryptoConfig ​} from './shared/​interceptors/crypto.config'; 
 + 
 +    export const appConfig: ApplicationConfig = { 
 +      providers: [ 
 +        provideHttpClient( 
 +          withInterceptors([cryptoInterceptorInterceptor(cryptoConfig)]) 
 +        ) 
 +      ] 
 +    }; 
 +</​code>​
  
-export const cryptoInterceptorInterceptor = (config: CryptoConfig):​ HttpInterceptorFn => 
-  (request, next) => { 
-    // Inyecta el servicio de encriptación y desencriptación 
-    const cryptoService = inject(CryptoUtilLibraryService);​ 
-    // Verifica si la URL de la solicitud debe excluirse del proceso de encriptación/​desencriptación 
-    const shouldSkip = config.excludedUrls.some(url => 
-      request.url.includes(url) 
-    ); 
-    if (shouldSkip) { 
-      return next(request);​ // Si la URL está excluida, continúa la solicitud sin modificaciones 
-    } 
-    // Si la solicitud tiene un cuerpo, se procede a encriptarlo antes de enviarlo 
-    if (request.body) { 
-      return from(cryptoService.encryptData(request.body)).pipe( 
-        switchMap(encryptedBody => { 
-          // Clona la solicitud con el cuerpo encriptado 
-          const clonedRequest = request.clone({ body: encryptedBody }); 
-          return next(clonedRequest).pipe( 
-            switchMap(event => { 
-              // Si la respuesta es un HttpResponse y tiene un cuerpo, se desencripta 
-              if (event instanceof HttpResponse && event.body) { 
-                const decryptedBodyPromise = cryptoService.decryptResponse(event.body);​ 
-                return from(decryptedBodyPromise).pipe( 
-                  map(decryptedBody => event.clone({ body: decryptedBody })) 
-                ); 
-              } 
-              return [event]; 
-            }), 
-            catchError(error => { 
-              // Si ocurre un error y contiene un cuerpo, se intenta desencriptar el mensaje de error 
-              if (error instanceof HttpErrorResponse && error.error) { 
-                const decryptedErrorPromise = cryptoService.decryptResponse(error.error);​ 
-                return from(decryptedErrorPromise).pipe( 
-                  switchMap(decryptedError => { 
-                    // Clona el error con el mensaje desencriptado 
-                    const clonedError = new HttpErrorResponse({ 
-                      ...error, 
-                      error: decryptedError,​ 
-                      url: error.url ?? undefined 
-                    }); 
-                    return throwError(() => clonedError);​ 
-                  }) 
-                ); 
-              } 
-              return throwError(() => error); // Si no es un error encriptado, lanza el error original 
-            }) 
-          ); 
-        }) 
-      ); 
-    } 
-    // Si la solicitud no tiene un cuerpo, solo se maneja la desencriptación de la respuesta 
-    return next(request).pipe( 
-      switchMap(event => { 
-        if (event instanceof HttpResponse && event.body) { 
-          const decryptedBodyPromise = cryptoService.decryptResponse(event.body);​ 
-          return from(decryptedBodyPromise).pipe( 
-            map(decryptedBody => event.clone({ body: decryptedBody })) 
-          ); 
-        } 
-        return [event]; 
-      }), 
-      catchError(error => { 
-        if (error instanceof HttpErrorResponse && error.error) { 
-          const decryptedErrorPromise = cryptoService.decryptResponse(error.error);​ 
-          return from(decryptedErrorPromise).pipe( 
-            switchMap(decryptedError => { 
-              const clonedError = new HttpErrorResponse({ 
-                ...error, 
-                error: decryptedError,​ 
-                url: error.url ?? undefined ​ 
-              }); 
-              return throwError(() => clonedError);​ 
-            }) 
-          ); 
-        } 
-        return throwError(() => error); 
-      }) 
-    ); 
-  }; 
  
  
 [[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front|←Regresar]] [[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front|←Regresar]]
 +
 +----
 +
 +//Documento actualizado:​ 03/​03/​2025//​\\
 +//Elaborado por: Luis Ardila - Desarrollador frontEnd//
ada/howto/sicoferp/factory/new-migracion-sicoferp/front/configuracion-libreria-encriptacion.1738169845.txt.gz · Última modificación: 2025/01/29 16:57 por 192.168.175.192