Hi All,
How can I get the password from Azure KeyVault > Secrets using secret name & Version to pass into Database connection string @ appsettings.json file below:-
Program.cs
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((context, config) =>
{
if (context.HostingEnvironment.IsProduction())
{
var builtConfig = config.Build();
using (var store = new X509Store(StoreLocation.CurrentUser))
{
store.Open(OpenFlags.ReadOnly);
var certs = store.Certificates
.Find(X509FindType.FindByThumbprint,
builtConfig["AzureADCertThumbprint"], false);
config.AddAzureKeyVault(
$"https://{builtConfig["KeyVaultName"]}.vault.azure.net/",
builtConfig["AzureADApplicationId"],
certs.OfType<X509Certificate2>().Single());
store.Close();
}
}
}).UseStartup<Startup>();
Startup.cs
public class Startup
{
string connectionString = "";
string clientid = "";
string clientsecret = "";
string aadInstance = "";
string tenant = "";
public Startup(IConfiguration configuration)
{
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
.AddEnvironmentVariables();
connectionString = configuration["ConnectionStrings:DefaultConnection"];
appsettings.json
{"KeyVaultName": "xxx-vault2","AzureADApplicationId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","AzureADCertThumbprint": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxx","AzureAd": {"Instance": "https://login.microsoftonline.com/","Domain": "xxxx.onmicrosoft.com","TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx","ClientSecret": "xxxxxxxx/xxxxxx/xxxxxxxxxxxxxxxx=","CallbackPath": "/signin-oidc","AuthorityFormat": "https://login.microsoftonline.com/{0}","RedirectUri": "https://xxxx.xxxx.com","GraphResourceId": "https://graph.windows.net", // This app uses the public instance of the Azure AD Graph API"GraphBaseEndpoint": "https://graph.windows.net","GraphApiVersion": "1.5"
},"Logging": {"LogLevel": {"Default": "Warning"
}
},"ConnectionStrings": {"DefaultConnection": "Server=xxxxdb.database.windows.net;Database=DBNAMEHERE;Persist Security Info=False;User ID=USERIDHERE;Password=@Microsoft.KeyVault(VaultName=xxx-vault2;SecretName=KeyVaultSecretNameHere;SecretVersion=xxxxxxxxxxxxxxxxxxxxxxx);MultipleActiveResultSets=True;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;"
},"AllowedHosts": "*"
}
Refer to appsettings.json ConnectionStrings >> DefaultConnection
Password section:
Password=@Microsoft.KeyVault(VaultName=xxx-vault2;SecretName=KeyVaultSecretNameHere;SecretVersion=xxxxxxxxxxxxxxxxxxxxxxx);
Something went wrong at the database string under appsettings.json
Please advise.
Thank you.
Regards,
Micheale