using Azure.Identity;
using Azure.Security.KeyVault.Secrets;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
namespace Core.Blueprint.KeyVault.Configuration
{
///
/// Registers the SecretClient for Azure Key Vault as a singleton service.
///
/// The IServiceCollection to add the services to.
/// The application's configuration.
/// The updated IServiceCollection.
/// Thrown when the KeyVault URI is missing in the configuration.
public static class RegisterBlueprint
{
public static IServiceCollection AddKeyVault(this IServiceCollection services, IConfiguration configuration)
{
var keyVaultUriString = configuration["ConnectionStrings:KeyVaultDAL"];
if (string.IsNullOrEmpty(keyVaultUriString))
{
throw new ArgumentNullException("ConnectionStrings:KeyVault", "KeyVault URI is missing in the configuration.");
}
var keyVaultUri = new Uri(keyVaultUriString);
// Register SecretClient as a singleton
services.AddSingleton(_ => new SecretClient(keyVaultUri, new DefaultAzureCredential()));
services.AddSingleton();
return services;
}
}
}