Wallero.KeyVault 1.0.0

dotnet add package Wallero.KeyVault --version 1.0.0
                    
NuGet\Install-Package Wallero.KeyVault -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Wallero.KeyVault" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Wallero.KeyVault" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Wallero.KeyVault" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Wallero.KeyVault --version 1.0.0
                    
#r "nuget: Wallero.KeyVault, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Wallero.KeyVault@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Wallero.KeyVault&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Wallero.KeyVault&version=1.0.0
                    
Install as a Cake Tool

Wallero.KeyVault

Copyright (c) Wallero Technologies (2025-present). All rights reserved.

A flexible Azure Key Vault integration package for Wallero Technologies applications, providing secure secret management with development fallback support.

Installation

Install the package via NuGet:

bash dotnet add package Wallero.KeyVault --version 1.0.0

Configuration

Configure settings in your appsettings.json and appsettings.Development.json:

appsettings.json

json { "WalleroConfiguration": { "LicenseKey": "Wallero-License-2025-Secure" }, "KeyVault": { "SharedVaultUri": "https://your-shared-keyvault.vault.azure.net/", "EnvironmentVaultUri": "https://your-{ASPNETCORE_ENVIRONMENT}-keyvault.vault.azure.net/", "TimeoutSeconds": 30 }, "EnvironmentSettings": { "ASPNETCORE_ENVIRONMENT": "{ASPNETCORE_ENVIRONMENT}", "IsLocalDevelopment": false, "AllowKeyVaultInLocal": false }, "AzureKeyVaultSettings": { "KeyVaultTenantId": "{KEY_VAULT_TENANT_ID}", "KeyVaultClientId": "{KEY_VAULT_CLIENT_ID}", "KeyVaultClientSecret": "{KEY_VAULT_CLIENT_SECRET}" } }

appsettings.Development.json

json { "WalleroConfiguration": { "LicenseKey": "Wallero-License-2025-Secure" }, "KeyVault": { "SharedVaultUri": "https://your-shared-keyvault.vault.azure.net/", "EnvironmentVaultUri": "https://your-{ASPNETCORE_ENVIRONMENT}-keyvault.vault.azure.net/", "TimeoutSeconds": 30 }, "EnvironmentSettings": { "ASPNETCORE_ENVIRONMENT": "{ASPNETCORE_ENVIRONMENT}", "IsLocalDevelopment": false, "AllowKeyVaultInLocal": false }, "AzureKeyVaultSettings": { "KeyVaultTenantId": "{KEY_VAULT_TENANT_ID}", "KeyVaultClientId": "{KEY_VAULT_CLIENT_ID}", "KeyVaultClientSecret": "{KEY_VAULT_CLIENT_SECRET}" } }

Setup

Add to your Program.cs:

csharp using Wallero.KeyVault.Extensions;

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddControllers(); builder.Services.AddHttpContextAccessor();

// Add Wallero Key Vault builder.Services.AddWalleroKeyVault(builder.Configuration);

// Register your secret mapping provider builder.Services.AddSecretMappingProvider<YourSecretConfiguration>();

// Register Secret Management Service for startup loading builder.Services.AddSingleton<ISecretManagementService, SecretManagementService>();

var app = builder.Build();

// Load secrets at startup await LoadSecretsAtStartup(app.Services);

app.UseHttpsRedirection(); app.MapControllers(); app.Run();

static async Task LoadSecretsAtStartup(IServiceProvider services) { using var scope = services.CreateScope(); var secretManagementService = scope.ServiceProvider.GetRequiredService<ISecretManagementService>(); await secretManagementService.LoadSecretsAsync(); }

Create Secret Configuration

Create a secret mapping provider:

csharp public class YourSecretConfiguration : ISecretMappingProvider { public IEnumerable<SecretRequest> GetSecretMappings() { return new[] { new SecretRequest { SecretName = "DatabaseConnectionString", UseSharedVault = false, // Environment-specific LocalFallbackKey = "ConnectionStrings:DefaultConnection", Description = "Database connection string for current environment" }, new SecretRequest { SecretName = "EncryptionKey", UseSharedVault = true, // Shared across environments LocalFallbackKey = "EncryptionSettings:EncryptionKey", Description = "Encryption key for data protection" } }; } }

Usage

Inject IKeyVaultService in your controllers or services:

csharp public class MyController : ControllerBase { private readonly IKeyVaultService keyVaultService;

public MyController(IKeyVaultService keyVaultService)
{
    this.keyVaultService = keyVaultService;
}

[HttpGet("secret/{name}")]
public async Task<IActionResult> GetSecret(string name)
{
    var secret = await keyVaultService.GetSecretAsync(name);
    return Ok(new { SecretName = name, HasValue = !string.IsNullOrEmpty(secret) });
}

}

Features

Azure Key Vault Integration: Secure access to Azure Key Vault secrets

Development Fallback: Automatic fallback to local configuration in development

Flexible Secret Mapping: Define secrets via provider pattern with local fallback keys

Credential Management: Automatic credential selection (DefaultAzureCredential vs ClientSecretCredential)

Startup Secret Loading: Pre-load secrets at application startup for better performance

Environment Support: Different handling for local development vs production environments

License Validation: Restricts usage to authorized Wallero applications

Environment Behavior

IsLocalDevelopment = true, AllowKeyVaultInLocal = false: Uses local configuration only

IsLocalDevelopment = true, AllowKeyVaultInLocal = true: Uses Key Vault with DefaultAzureCredential

IsLocalDevelopment = false: Uses Key Vault with ClientSecretCredential (production)

License

This project is licensed under the MIT License.

Contact

For support, contact Wallero Technologies at support@wallero.com

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
.NET Core netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.1 is compatible. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 85 8/15/2025

Initial release targeting netstandard2.1 with Microsoft.Extensions 8.x dependencies.