Vault

VaultData descarga un JSON cifrado con AES, lo descifra con una contraseña y expone cada clave con Read, sin secretos en el código.

VaultData, en el namespace Dinaup.Vault del paquete Dinaup, resuelve dónde guardar secretos (credenciales, endpoints, claves). El único dato en el entorno es la URL del almacén cifrado y la contraseña que lo descifra. Todo lo demás viaja cifrado y se lee en memoria.

Antes de empezar

  • Paquete Dinaup instalado. Ver SDK .NET.
  • Un vault publicado: la URL del blob cifrado y su contraseña. Generar y publicar el blob es un paso previo fuera de esta biblioteca; el SDK solo lo lee.
using Dinaup.Vault;

Cómo funciona

VaultData descarga el blob de la URL y lo descifra con la contraseña. El JSON resultante se deserializa en Parameters, un diccionario que ignora mayúsculas y minúsculas. Read(key) devuelve el valor o cadena vacía si la clave no existe.

La URL y la contraseña se pasan como valores directos o como nombres de variables de entorno. El constructor busca cada nombre en el entorno de máquina, proceso y usuario. Si no encuentra nada, usa el texto tal cual.

// Los nombres de las variables de entorno con la URL y la contraseña
var vault = new VaultData("VAULT_URL", "VAULT_PASSWORD");
vault.Initialize();

// A partir de aquí, todo sale del vault descifrado
string endpoint  = vault.Read("dinaup.endpoint");
string publicKey = vault.Read("dinaup.publickey");
string secretKey = vault.Read("dinaup.secretkey");

Conectar Dinaup desde el vault

El caso típico: arrancar el cliente Dinaup sin credenciales en el código.

using Dinaup;
using Dinaup.Vault;

var vault = new VaultData("VAULT_URL", "VAULT_PASSWORD");
vault.Initialize();

var client = await DinaupClientC.ConnectAsync(
    endPoint:  vault.Read("dinaup.endpoint"),
    publicKey: vault.Read("dinaup.publickey"),
    secretKey: vault.Read("dinaup.secretkey")
);

DinaupExternalAppSettings(vault) lee del mismo vault las claves DINAUP_APPID y DINAUP_APPTOKEN de una app externa. Ver Apps multi-tenant.

Todos los miembros

MiembroQué hace
New(url o variable, contraseña o variable)Resuelve la URL y la contraseña, sin descargar todavía.
New(args)Para apps de consola: toma como archivo de configuración el primer argumento que termine en .json y exista.
New()Vacío; después fija ConfigurationFilePath o llama a Initialize(url, pass).
Initialize()Descarga y descifra con la URL y la contraseña resueltas. Sin ellas, lee ConfigurationFilePath: un JSON con endpoint (empieza por http) y pass. Lanza InvalidOperationException si falta algo.
Initialize(url, pass)Descarga y descifra con valores explícitos.
Read(key)El valor de la clave o cadena vacía.
ParametersEl diccionario completo.
ConfigurationFilePathRuta del JSON local con endpoint y pass.
EnableEnvironmentVariableForConsole(nombre)En apps de consola, pide por terminal la ruta del JSON y la guarda en esa variable de entorno de usuario si no estaba.
HealthCheck()Descarga y descifra el vault y devuelve true si trae al menos una clave. Registra el fallo en el log.

Un fallo de descarga, de descifrado o de JSON lanza InvalidOperationException con la causa dentro. Captúrala al arrancar y para el proceso: una app sin secretos no debe seguir.

Los secretos que guarda Dinaup por ti (claves API, credenciales de integraciones) se gestionan desde Vault en tu cuenta.

En esta página