Example #1
0
        private static ISecretProvider CreateAuthorizedSecretProvider(SecretStoreSource source, Role role, IRoleAuthorization authorization)
        {
            if (source.CachedSecretProvider is null)
            {
                return(new AuthorizedSecretProvider(role, authorization, source.SecretProvider));
            }

            return(new AuthorizedCachedSecretProvider(role, authorization, source.CachedSecretProvider));
        }
Example #2
0
        private static void ReplaceSecretSourceWithAuthorized(Role role, IList <SecretStoreSource> after, IEnumerable <SecretStoreSource> before)
        {
            SecretStoreSource[] pendingAuthorization = after.Except(before).ToArray();

            foreach (SecretStoreSource pendingSource in pendingAuthorization)
            {
                var authorizedSource = new SecretStoreSource(serviceProvider =>
                {
                    var authorization = serviceProvider.GetRequiredService <IRoleAuthorization>();
                    ISecretProvider secretProvider = CreateAuthorizedSecretProvider(pendingSource, role, authorization);

                    return(secretProvider);
                });

                int index = after.IndexOf(pendingSource);
                after[index] = authorizedSource;
            }
        }