使用用户凭据(非机器特定)解密/解密(自定义)ConfigurationSection

时间:2014-08-25 09:34:42

标签: c# app-config dpapi

我正在开发一个.NET 4.5桌面应用程序(wpf)。我成功创建了一个自定义部分,我可以在其中加载/编辑App.config中的数据。现在我想加密这一部分,并设法使用DPAPI:

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

但是,当我尝试在另一台机器上解密此App.config时 - 但是使用相同的用户(活动目录),这会失败。我手头没有具体的错误信息 - 我认为这根本不是必要的,因为我觉得这是一个失败,因为“使用机器商店”标志,我不知道如何关掉。

我尝试在app.config中添加configProtectedData,如下所示:

<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中,当我启动应用程序时,我在System.Windows.Application..ctor()中的System.Windows.Application.ApplicationInit()中得到一个TypeInitializationException 。 我读到我必须运行一个控制台命令来使用自定义ProtectionProvider加密文件,但这些教程都是关于ASP.NET的,所以我不确定这是否符合我的需要。

我有点被困在这里。这个API有点整洁,因为我不必理会如何以及何时解密 - 我只是从该部分读取值,其余部分自动完成。简而言之:如何使用DPAPI用户存储加密,或者如果不可能:什么是易于实现的替代方案?

0 个答案:

没有答案