in src/Saas.Identity/Saas.Permissions/Saas.Permissions.Service_v1.1/Program.cs [138:179]
void InitializeDevEnvironment()
{
// IMPORTANT
// The current version.
// Must correspond exactly to the version string of our deployment as specificed in the deployment config.json.
var version = "ver0.8.0";
logger.LogInformation("Version: {version}", version);
logger.LogInformation($"Is Development.");
// For local development, use the Secret Manager feature of .NET to store a connection string
// and likewise for storing a secret for the permission-api app.
// https://learn.microsoft.com/en-us/aspnet/core/security/app-secrets?view=aspnetcore-8.0&tabs=windows
var appConfigurationconnectionString = builder.Configuration.GetConnectionString("AppConfig")
?? throw new NullReferenceException("App config missing.");
// Use the connection string to access Azure App Configuration to get access to app settings stored there.
// To gain access to Azure Key Vault use 'Azure Cli: az login' to log into Azure.
// This login on will also now provide valid access tokens to the local development environment.
// For more details and the option to chain and combine multiple credential options with `ChainedTokenCredential`
// please see: https://learn.microsoft.com/en-us/dotnet/api/overview/azure/identity-readme?view=azure-dotnet#define-a-custom-authentication-flow-with-chainedtokencredential
AzureCliCredential credential = new();
builder.Configuration.AddAzureAppConfiguration(options =>
options.Connect(appConfigurationconnectionString)
.ConfigureKeyVault(kv => kv.SetCredential(new ChainedTokenCredential(credential)))
.Select(KeyFilter.Any, version)); // <-- Important: since we're using labels in our Azure App Configuration store
// Configuring Swagger.
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
// Enabling to option for add the 'x-api-key' header to swagger UI.
builder.Services.AddSwaggerGen(option =>
{
option.SwaggerDoc("v1", new() { Title = "Permissions API", Version = "v1.1" });
// option.OperationFilter<SwagCustomHeaderFilter>();
});
}