in src/Saas.Admin/Saas.Admin.Service/Program.cs [172:197]
void InitializeProdEnvironment()
{
// For procution environment, we'll configured Managed Identities for managing access Azure App Services
// and Key Vault. The Azure App Services endpoint is stored in an environment variable for the web app.
var version = builder.Configuration.GetRequiredSection("Version")?.Value
?? throw new NullReferenceException("The Version value cannot be found. Has the 'Version' environment variable been set correctly for the Web App?");
logger.LogInformation("Version: {version}", version);
logger.LogInformation($"Is Production.");
var appConfigurationEndpoint = builder.Configuration.GetRequiredSection("AppConfiguration:Endpoint")?.Value
?? throw new NullReferenceException("The Azure App Configuration Endpoint cannot be found. Has the endpoint environment variable been set correctly for the Web App?");
// Get the ClientId of the UserAssignedIdentity
// If we don't set this ClientID in the ManagedIdentityCredential constructor, it doesn't know it should use the user assigned managed id.
var managedIdentityClientId = builder.Configuration.GetRequiredSection("UserAssignedManagedIdentityClientId")?.Value
?? throw new NullReferenceException("The Environment Variable 'UserAssignedManagedIdentityClientId' cannot be null. Check the App Service Configuration.");
ManagedIdentityCredential userAssignedManagedCredentials = new(managedIdentityClientId);
builder.Configuration.AddAzureAppConfiguration(options =>
options.Connect(new Uri(appConfigurationEndpoint), userAssignedManagedCredentials)
.ConfigureKeyVault(kv => kv.SetCredential(userAssignedManagedCredentials))
.Select(KeyFilter.Any, version)); // <-- Important since we're using labels in our Azure App Configuration store
}