Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Microsoft.Azure.KeyVault;
- using Microsoft.Azure.Services.AppAuthentication;
- using Microsoft.Azure.WebJobs;
- using Microsoft.Azure.WebJobs.Hosting;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.Configuration.AzureKeyVault;
- using Microsoft.Extensions.DependencyInjection;
- using Microsoft.Extensions.DependencyInjection.Extensions;
- using System;
- using System.Linq;
- [assembly: WebJobsStartup(typeof(Startup))]
- namespace MyServices.Functions
- {
- public class Startup : IWebJobsStartup
- {
- public static string Environment;
- public void Configure(IWebJobsBuilder builder)
- {
- var config = ReplaceConfiguration(builder);
- builder.Services.AddMyServices(config.GetSection("MySection"));
- }
- private static IConfiguration ReplaceConfiguration(IWebJobsBuilder builder)
- {
- var baseConfig = builder.Services.FirstOrDefault(d => d.ServiceType == typeof(IConfiguration))?.ImplementationInstance as IConfigurationRoot;
- Environment = baseConfig?.GetValue<string>("ASPNETCORE_ENVIRONMENT") ?? "Development";
- var config = new ConfigurationBuilder();
- if (baseConfig != null)
- config.AddConfiguration(baseConfig);
- config.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
- .AddJsonFile($"appsettings.{Environment}.json", optional: true, reloadOnChange: true);
- if (Environment.Equals("Development", StringComparison.OrdinalIgnoreCase))
- {
- config.AddUserSecrets<Startup>();
- }
- config.AddEnvironmentVariables();
- if (!Environment.Equals("Development", StringComparison.OrdinalIgnoreCase))
- {
- var vaultConfig = config.Build().GetSection("ConfigurationVault");
- var url = vaultConfig.GetValue<string>("AzureVaultUrl");
- var tokenProvider = new AzureServiceTokenProvider();
- var kvClient = new KeyVaultClient((authority, resource, scope) => tokenProvider.KeyVaultTokenCallback(authority, resource, scope));
- config.AddAzureKeyVault(url, kvClient, new DefaultKeyVaultSecretManager());
- }
- var newConfig = config.Build();
- builder.Services.Replace(ServiceDescriptor.Singleton(typeof(IConfiguration), newConfig));
- return newConfig;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement