public static SecretStoreBuilder AddAzureKeyVaultProvider( this SecretStoreBuilder builder, IKeyVaultAuthentication authentication, IKeyVaultConfiguration configuration) { return(builder.AddProvider(new KeyVaultSecretProvider(authentication, configuration))); }
public static SecretStoreBuilder AddInMemoryProvider( this SecretStoreBuilder builder, IDictionary <string, Secret> secrets) { var provider = new InMemorySecretProvider(secrets); return(builder.AddProvider(provider)); }
public static SecretStoreBuilder AddConfiguration( this SecretStoreBuilder builder, IConfiguration configuration) { var provider = new ConfigurationSecretProvider(configuration); return(builder.AddProvider(provider)); }
public void AddProviderFunction_WithoutFunctionWithOptions_Throws() { // Arrange var services = new ServiceCollection(); var builder = new SecretStoreBuilder(services); // Act / Assert Assert.ThrowsAny <ArgumentException>(() => builder.AddProvider(createSecretProvider: null, configureOptions: options => { })); }
public void AddProvider_WithoutSecretProvider_Throws() { // Arrange var services = new ServiceCollection(); var builder = new SecretStoreBuilder(services); // Act / Assert Assert.ThrowsAny <ArgumentException>(() => builder.AddProvider(secretProvider: null)); }
private static SecretStoreBuilder AddHashiCorpVault( SecretStoreBuilder builder, VaultClientSettings settings, string secretPath, HashiCorpVaultOptions options, Action <SecretProviderOptions> configureSecretProviderOptions) { AddHashiCorpCriticalExceptions(builder); return(builder.AddProvider(serviceProvider => { var logger = serviceProvider.GetService <ILogger <HashiCorpSecretProvider> >(); var provider = new HashiCorpSecretProvider(settings, secretPath, options, logger); return provider; }, configureSecretProviderOptions)); }
/// <summary> /// <para> /// Adds the secrets of a HashiCorp Vault KeyValue engine to the secret store. /// </para> /// <para> /// See more information on HashiCorp: <a href="https://www.vaultproject.io/docs" />. /// </para> /// </summary> /// <typeparam name="TSecretProvider">The custom implementation type that implements the <see cref="HashiCorpSecretProvider"/>.</typeparam> /// <param name="builder">The builder to add the HashiCorp secrets from the KeyValue Vault to.</param> /// <param name="implementationFactory">The factory function to create an implementation of the <see cref="HashiCorpSecretProvider"/>.</param> /// <param name="name">The unique name to register this HashiCorp provider in the secret store.</param> /// <param name="mutateSecretName">The optional function to mutate the secret name before looking it up.</param> /// <exception cref="ArgumentNullException">Thrown when the <paramref name="builder"/> or the <paramref name="implementationFactory"/> is <c>null</c>.</exception> public static SecretStoreBuilder AddHashiCorpVault <TSecretProvider>( this SecretStoreBuilder builder, Func <IServiceProvider, TSecretProvider> implementationFactory, string name, Func <string, string> mutateSecretName) where TSecretProvider : HashiCorpSecretProvider { Guard.NotNull(builder, nameof(builder), "Requires a secret store builder to add the HashiCorp Vault secret provider"); Guard.NotNull(implementationFactory, nameof(implementationFactory), "Requires a factory function to create a HashiCorp KeyValue Vault secret provider implementation"); AddHashiCorpCriticalExceptions(builder); return(builder.AddProvider(implementationFactory, options => { options.Name = name; options.MutateSecretName = mutateSecretName; })); }
private static SecretStoreBuilder AddHashiCorpVault( SecretStoreBuilder builder, VaultClientSettings settings, string secretPath, HashiCorpVaultOptions options, Func <string, string> mutateSecretName) { // Thrown when the HashiCorp Vault's authentication and/or authorization fails. builder.AddCriticalException <VaultApiException>(exception => { return(exception.HttpStatusCode == HttpStatusCode.BadRequest || exception.HttpStatusCode == HttpStatusCode.Forbidden); }); return(builder.AddProvider(serviceProvider => { var logger = serviceProvider.GetService <ILogger <HashiCorpSecretProvider> >(); var provider = new HashiCorpSecretProvider(settings, secretPath, options, logger); return provider; }, mutateSecretName)); }
public static SecretStoreBuilder AddEnvironmentVariableProvider(this SecretStoreBuilder builder) { return(builder.AddProvider(new EnvironmentVariableSecretProvider())); }