Desarrollo
Isolated Storage
A veces, necesitamos almacenar información en Business Central que no esté accesible desde otras aplicaciones, por ejemplo password, urls, API Keys,...
En versiones on-Premise, para almacenar esa información, tenemos disponible la tabla de sistema Isolated Storage. Una tabla que mantiene la información segura, sin posibilidad de leerla desde otra aplicación que no sea la nuestra.
Aunque si queremos usar esa tabla en versiones online, no nos deja puesto que tiene ámbito de OnPrem.
En versión SaaS, gestionamos la información mediante el tipo de datos IsolatedStorage.
Tipo de datos IsolatedStorage
Se almacenan pares de key-value.
Los valores key son de tipo texto y los Value se almacenan en Blob
El tipo de datos Isolated Storage tiene los siguientes métodos:
Delete: Permite borrar una clave indicada.
Get: Obtiene el valor asociado a una clave indicada almacenada en Isolated Storage.
Set: Permite guardar una clave - valor en Isolated Storage
SetEncrypted: Igual que el set, pero guarda el value encriptado (limita la longitud del valor a 215 caracteres de texto plano. El método Get desencripta automáticamente el valor.
En el caso de Business Central online, la encriptación está siempre habilitada.
En todos los métodos, disponemos del parámetro opcional DataScope que puede ser uno de los siguientes:
Module: Indica que el registro sólo está accesible dentro de la misma extensión.
Company: Indica que el registro sólo está accesible dentro de la misma empresa
User: Indica que el registro sólo está accesible para un usuario en una extensión.
CompanyAndUser: Indica que el registro está accesible para un usuario y una empresa.
Ejemplo de uso
Imagina que tienes que usar una API-KEY y un endPoint para acceder a tu Azure Open AI. Tendremos que introducir dichos valores, pero no queremos que se almacenen en una tabla y que luego pudiesen ser obtenidos desde otra aplicación para acceder a nuestro Azure.
Utilizaríamos una codeunit para gestionar los valores:
¿Que ocurre si intentamos leer la información desde otra extensión? El sistema nos mostrará un error de que no encuentra la key-value.
¿Y si creamos una dependencia? Podríamos acceder a los métodos creados en mi codeunit y obtener los valores. 😒
Para solucionar este problemilla, lo que haremos será marcar la codeunit que contiene los métodos de acceso a Isolate Storage como interna.
Documentación
Puedes acceder a la documentación oficial de Isolate Storage desde aquí:
Microsoft Learn Propiedad Access
Espero que Isolate Storage te pueda ayudar a mantener tus "secretos" a salvo en Business Central.
Aquí tienes el video por si te ayuda a verlo funcionar:
Si te ha parecido interesante, puedes invitarme a un café 😇
Gracias
No hay comentarios:
Publicar un comentario