En / расшифровать (настраиваемый) ConfigurationSection с учетными данными пользователя (не зависит от компьютера)

Я занимаюсь разработкой настольного приложения.NET 4.5 (wpf). Я успешно создал пользовательский раздел, из которого я могу загружать / редактировать данные в App.config. Теперь я хочу зашифровать этот раздел и сумел сделать это с помощью DPAPI:

SectionInformation secInfo = Section.SectionInformation;
if(!secInfo.IsProtected)
{
    secInfo.ProtectionSection("DataProtectionConfigurationProvider");
    secInfo.ForceSave = true;
}

Тем не менее, когда я пытаюсь расшифровать этот файл App.config на другом компьютере - но с тем же пользователем (активный каталог), это не удается. У меня нет конкретного сообщения об ошибке - я считаю, что оно вообще не нужно, потому что мне кажется очевидным, что это сбой из-за флага "use machine store", который я не знаю, как выключи.

Я попытался сделать это, добавив configProtectedData в мой app.config, например так:

<configuration>
    <configProtectedData>
        <providers>
            <add useMachineProtection="false" keyEntropy="" name="MyUserDataProtectionConfigurationProvider"
            type="System.Configuration.DpapiProtectedConfigurationProvider, System.Configuration,
            Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
        </providers>
    </configProtectedData>
</configuration>

Я чем изменилсяsecInfo.ProtectionSection("DataProtectionConfigurationProvider");

вsecInfo.ProtectionSection("MyUserDataProtectionConfigurationProvider");

Однако я получаю ошибку intellisense "атрибут 'useMachineProtection' не разрешен". в App.config, и я получаю исключение TypeInitializationException в System.Windows.Application.ApplicationInit() в System.Windows.Application..ctor() при запуске приложения. Я прочитал, что мне нужно запустить консольную команду для шифрования файла с помощью пользовательского ProtectionProvider, но в этих руководствах рассказывается об ASP.NET, поэтому я не уверен, что это подойдет моим потребностям.

Я вроде застрял здесь. Этот API довольно изящен, потому что мне не нужно беспокоиться о том, как и когда расшифровывать - я просто читаю значения из раздела, а все остальное делается автоматически. Короче говоря: Как зашифровать с помощью пользовательского хранилища DPAPI или, если это невозможно, что является простой альтернативой?

0 ответов

Другие вопросы по тегам