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:58]
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 URLsLa implementación debe realizarse de la siguiente manera::
-       ​import { CryptoUtilLibraryService } from '../​services/​crypto-util-library.service';​+
  
-  export const cryptoInterceptorInterceptor = (config: CryptoConfig):​ HttpInterceptorFn =+<code
-  ​(request,​ next) => { +    ​import ​cryptoInterceptorInterceptor } from './​shared/​interceptors/​crypto-interceptor.interceptor'​
-    const cryptoService = inject(CryptoUtilLibraryService);​ +    ​import ​cryptoConfig ​} from './​shared/​interceptors/​crypto.config';​ 
-    const shouldSkip = config.excludedUrls.some(url => + 
-      request.url.includes(url) +    ​export ​const appConfigApplicationConfig ​= { 
-    )+      ​providers: [ 
-    ​if (shouldSkip) ​{ +        ​provideHttpClient
-      return next(request);​ +          ​withInterceptors([cryptoInterceptorInterceptor(cryptoConfig)]
-    ​} +        
-    if (request.body) { +      ] 
-      return ​from(cryptoService.encryptData(request.body)).pipe( +    }; 
-        ​switchMap(encryptedBody => { +</code>
-          const clonedRequest = request.clone({ bodyencryptedBody }); +
-          return next(clonedRequest).pipe( +
-            switchMap(event ​=+
-              if (event instanceof HttpResponse && event.body) { +
-                const decryptedBodyPromise = cryptoService.decryptResponse(event.body);​ +
-                return from(decryptedBodyPromise).pipe( +
-                  map(decryptedBody => event.clone({ bodydecryptedBody })) +
-                ); +
-              } +
-              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); +
-            })+
  
-          ); 
-        }) 
-      ); 
-    } 
-    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.1738169927.txt.gz · Última modificación: 2025/01/29 16:58 por 192.168.175.192