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 17:03]
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.
  
- * [[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:​interceptor-encriptacion|Interceptor ]] 
- * [[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front:​configuracion-libreria-encriptacion:​archivo-configuracion-interceptor-encriptacion|Archivo de configuración]]+    ​[[ada:​howto:​sicoferp:​factory:​new-migracion-sicoferp:​front:​configuracion-libreria-encriptacion:​archivo-configuracion-interceptor-encriptacion|Archivo de configuración]]
  
-==== Interceptor ====+  * 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 { CryptoConfig ​} from '​./​crypto.config'; +<​code>​ 
-       ​import { CryptoUtilLibraryService ​} from '../services/crypto-util-library.service';+    ​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) => { 
-    const cryptoService = inject(CryptoUtilLibraryService);​ 
-    const shouldSkip = config.excludedUrls.some(url => 
-      request.url.includes(url) 
-    ); 
-    if (shouldSkip) { 
-      return next(request);​ 
-    } 
-    if (request.body) { 
-      return from(cryptoService.encryptData(request.body)).pipe( 
-        switchMap(encryptedBody => { 
-          const clonedRequest = request.clone({ body: encryptedBody }); 
-          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({ 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); 
-            }) 
-          ); 
-        }) 
-      ); 
-    } 
-    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.1738170191.txt.gz · Última modificación: 2025/01/29 17:03 por 192.168.175.192