Ejemplo n.º 1
0
 public static SecretStoreBuilder AddAzureKeyVaultProvider(
     this SecretStoreBuilder builder,
     IKeyVaultAuthentication authentication,
     IKeyVaultConfiguration configuration)
 {
     return(builder.AddProvider(new KeyVaultSecretProvider(authentication, configuration)));
 }
Ejemplo n.º 2
0
        public static SecretStoreBuilder AddInMemoryProvider(
            this SecretStoreBuilder builder,
            IDictionary <string, Secret> secrets)
        {
            var provider = new InMemorySecretProvider(secrets);

            return(builder.AddProvider(provider));
        }
Ejemplo n.º 3
0
        public static SecretStoreBuilder AddConfiguration(
            this SecretStoreBuilder builder,
            IConfiguration configuration)
        {
            var provider = new ConfigurationSecretProvider(configuration);

            return(builder.AddProvider(provider));
        }
Ejemplo n.º 4
0
        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 => { }));
        }
Ejemplo n.º 5
0
        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));
        }
Ejemplo n.º 9
0
 public static SecretStoreBuilder AddEnvironmentVariableProvider(this SecretStoreBuilder builder)
 {
     return(builder.AddProvider(new EnvironmentVariableSecretProvider()));
 }