Beispiel #1
0
        private void EnsureUniqueSecretProviderNames()
        {
            IEnumerable <string> secretProvidersWithDuplicateNames =
                SecretStoreSources.GroupBy(source => source.Options?.Name)
                .Where(group => @group.Key != null && @group.Count() > 1)
                .Select(group => @group.Key);

            if (secretProvidersWithDuplicateNames.Any())
            {
                string duplicateNames = String.Join(", ", secretProvidersWithDuplicateNames);
                throw new InvalidOperationException(
                          $"Cannot set up secret store because one or more {nameof(ISecretProvider)} was registered with the same name: {duplicateNames}");
            }
        }
Beispiel #2
0
        /// <summary>
        /// Adds an <see cref="ISecretProvider"/> implementation to the secret store of the application.
        /// </summary>
        /// <param name="secretProvider">The provider which secrets are added to the secret store.</param>
        /// <param name="mutateSecretName">The optional function to mutate the secret name before looking it up.</param>
        /// <returns>
        ///     The extended secret store with the given <paramref name="secretProvider"/>.
        /// </returns>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="secretProvider"/> is <c>null</c>.</exception>
        public SecretStoreBuilder AddProvider(ISecretProvider secretProvider, Func <string, string> mutateSecretName = null)
        {
            Guard.NotNull(secretProvider, nameof(secretProvider), "Requires a secret provider to add to the secret store");

            if (mutateSecretName is null)
            {
                SecretStoreSources.Add(new SecretStoreSource(secretProvider));
            }
            else
            {
                SecretStoreSources.Add(CreateMutatedSecretSource(serviceProvider => secretProvider, mutateSecretName));
            }

            return(this);
        }
        /// <summary>
        /// Adds an <see cref="ISecretProvider"/> implementation to the secret store of the application.
        /// </summary>
        /// <param name="secretProvider">The provider which secrets are added to the secret store.</param>
        /// <param name="configureOptions">The function to configure the registration of the <see cref="ISecretProvider"/> in the secret store.</param>
        /// <returns>
        ///     The extended secret store with the given <paramref name="secretProvider"/>.
        /// </returns>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="secretProvider"/> is <c>null</c>.</exception>
        public SecretStoreBuilder AddProvider(
            ISecretProvider secretProvider,
            Action <SecretProviderOptions> configureOptions)
        {
            Guard.NotNull(secretProvider, nameof(secretProvider), "Requires a secret provider to add to the secret store");

            var options = new SecretProviderOptions();

            configureOptions?.Invoke(options);

            if (options?.MutateSecretName is null)
            {
                SecretStoreSources.Add(new SecretStoreSource(secretProvider, options));
            }
            else
            {
                SecretStoreSources.Add(CreateMutatedSecretSource(serviceProvider => secretProvider, options));
            }

            return(this);
        }
        /// <summary>
        /// Adds an <see cref="ISecretProvider"/> implementation to the secret store of the application.
        /// </summary>
        /// <param name="secretProvider">The provider which secrets are added to the secret store.</param>
        /// <param name="configureOptions">The function to configure the registration of the <see cref="ISecretProvider"/> in the secret store.</param>
        /// <returns>
        ///     The extended secret store with the given <paramref name="secretProvider"/>.
        /// </returns>
        /// <exception cref="ArgumentNullException">Thrown when the <paramref name="secretProvider"/> is <c>null</c>.</exception>
        public SecretStoreBuilder AddProvider(
            ISecretProvider secretProvider,
            Action <SecretProviderOptions> configureOptions)
        {
            Guard.NotNull(secretProvider, nameof(secretProvider), "Requires a secret provider to add to the secret store");

            var options = new SecretProviderOptions();

            configureOptions?.Invoke(options);

            // ReSharper disable once ConstantConditionalAccessQualifier - options can still be 'null' when consumer set it to 'null'.
            if (options?.MutateSecretName is null)
            {
                SecretStoreSources.Add(new SecretStoreSource(secretProvider, options));
            }
            else
            {
                SecretStoreSources.Add(CreateMutatedSecretSource(serviceProvider => secretProvider, options));
            }

            return(this);
        }