Wallero.KeyVault
1.0.0
dotnet add package Wallero.KeyVault --version 1.0.0
NuGet\Install-Package Wallero.KeyVault -Version 1.0.0
<PackageReference Include="Wallero.KeyVault" Version="1.0.0" />
<PackageVersion Include="Wallero.KeyVault" Version="1.0.0" />
<PackageReference Include="Wallero.KeyVault" />
paket add Wallero.KeyVault --version 1.0.0
#r "nuget: Wallero.KeyVault, 1.0.0"
#:package Wallero.KeyVault@1.0.0
#addin nuget:?package=Wallero.KeyVault&version=1.0.0
#tool nuget:?package=Wallero.KeyVault&version=1.0.0
Wallero.KeyVault
Copyright
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 | Versions 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. |
-
.NETStandard 2.1
- Azure.Identity (>= 1.15.0)
- Azure.Security.KeyVault.Secrets (>= 4.8.0)
- Microsoft.Extensions.Configuration.Abstractions (>= 8.0.0)
- Microsoft.Extensions.Configuration.Binder (>= 8.0.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.0)
- Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
- Microsoft.Extensions.Options (>= 8.0.0)
- Wallero.Security (>= 1.0.2)
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.