From 9de4c4a210828adccfa5e1b52fbd3c6f65b11bad Mon Sep 17 00:00:00 2001 From: Mike Alhayek Date: Mon, 29 Jan 2024 17:13:17 -0800 Subject: [PATCH] Add descriptive exception for Azure-Valut service (#15178) --- src/OrchardCore.Cms.Web/appsettings.json | 2 +- .../AzureKeyVaultConfigurationExtension.cs | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/OrchardCore.Cms.Web/appsettings.json b/src/OrchardCore.Cms.Web/appsettings.json index f9164bf07dfe..30d17294534f 100644 --- a/src/OrchardCore.Cms.Web/appsettings.json +++ b/src/OrchardCore.Cms.Web/appsettings.json @@ -112,7 +112,7 @@ // Add 'AddOrchardCoreAzureKeyVault()' to the Generic Host in 'CreateHostBuilder() section'. //"OrchardCore_KeyVault_Azure": { // "KeyVaultName": "", // Set the name of your Azure Key Vault. - // "ReloadInterval": // Optional, timespan to wait between attempts at polling the Azure KeyVault for changes. Leave blank to disable reloading. + // "ReloadInterval": null // Optional, timespan to wait between attempts at polling the Azure KeyVault for changes. Leave blank to disable reloading. //}, // See https://docs.orchardcore.net/en/latest/docs/reference/modules/Users/Configuration/#custom-paths //"OrchardCore_Users": { diff --git a/src/OrchardCore/OrchardCore.Configuration.KeyVault/Extensions/AzureKeyVaultConfigurationExtension.cs b/src/OrchardCore/OrchardCore.Configuration.KeyVault/Extensions/AzureKeyVaultConfigurationExtension.cs index 1e1851cac392..1ffd074169e0 100644 --- a/src/OrchardCore/OrchardCore.Configuration.KeyVault/Extensions/AzureKeyVaultConfigurationExtension.cs +++ b/src/OrchardCore/OrchardCore.Configuration.KeyVault/Extensions/AzureKeyVaultConfigurationExtension.cs @@ -70,26 +70,29 @@ private static void AddOrchardCoreAzureKeyVault( { var keyVaultName = configuration["OrchardCore:OrchardCore_KeyVault_Azure:KeyVaultName"]; - TimeSpan? reloadInterval = null; - if (double.TryParse(configuration["OrchardCore:OrchardCore_KeyVault_Azure:ReloadInterval"], out var interval)) + if (string.IsNullOrEmpty(keyVaultName)) + { + throw new Exception("The 'KeyVaultName' property is no configured. Please configure it by specifying the 'OrchardCore:OrchardCore_KeyVault_Azure:KeyVaultName' settings key."); + } + + if (!Uri.TryCreate($"https://{keyVaultName}.vault.azure.net", UriKind.Absolute, out var keyVaultEndpointUri)) { - reloadInterval = TimeSpan.FromSeconds(interval); + throw new Exception("Invalid value used for 'KeyVaultName' property. Please provide a valid key-vault name using the 'OrchardCore:OrchardCore_KeyVault_Azure:KeyVaultName' settings key."); } - var keyVaultEndpointUri = new Uri("https://" + keyVaultName + ".vault.azure.net"); var configOptions = new AzureKeyVaultConfigurationOptions() { Manager = new AzureKeyVaultSecretManager(), - ReloadInterval = reloadInterval, }; + if (double.TryParse(configuration["OrchardCore:OrchardCore_KeyVault_Azure:ReloadInterval"], out var interval)) + { + configOptions.ReloadInterval = TimeSpan.FromSeconds(interval); + } + tokenCredential ??= new DefaultAzureCredential(includeInteractiveCredentials: true); - builder.AddAzureKeyVault( - keyVaultEndpointUri, - tokenCredential, - configOptions - ); + builder.AddAzureKeyVault(keyVaultEndpointUri, tokenCredential, configOptions); } } }