Skip to content

Instantly share code, notes, and snippets.

@maxnorth
Created January 22, 2020 02:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maxnorth/521e750a2023a7e70d1794432fac44db to your computer and use it in GitHub Desktop.
Save maxnorth/521e750a2023a7e70d1794432fac44db to your computer and use it in GitHub Desktop.
Partial key rotation implementation using the Key Vault config provider
using Microsoft.Extensions.Configuration;
namespace Example
{
public interface IKeyProvider
{
string GetKey();
void SwitchKey();
}
public class KeyProvider
{
public KeyProvider(IConfigurationRoot config)
{
_config = config;
}
private IConfigurationRoot _config;
private bool usePrimaryKey = true;
string GetKey()
{
return usePrimaryKey ? _config["ServiceKey1"] : _config["ServiceKey2"];
}
void SwitchKey()
{
usePrimaryKey = !usePrimaryKey;
}
}
}
using System;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.AzureKeyVault;
namespace Example
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((context, configBuilder) =>
{
var config = configBuilder.Build();
configBuilder.AddAzureKeyVault(new AzureKeyVaultConfigurationOptions
{
Vault = config["KeyVaultUrl"],
ReloadInterval = TimeSpan.FromMinutes(10)
});
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment