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 или, если это невозможно, что является простой альтернативой?