我正在开发一个 asp.net 核心应用程序以在网络上进行调优,并且我正在使用“AddDataProtection”来保护静态密钥加密,就像文档建议的那样,但是当我部署我的应用程序并直接从 IIS 运行时AppPool 身份,从未创建密钥,并且我在 DpapiNG Windows 日志中收到错误。
我的代码如下:
services.AddDataProtection(opt => opt.ApplicationDiscriminator = ApplicationConfig.dataProtectionApplicationDiscriminator)
.PersistKeysToFileSystem(new DirectoryInfo(encKeyPath))
.ProtectKeysWithDpapiNG(string.Format("CERTIFICATE=HashId:{0}", ApplicationConfig.dataProtectionCertThumbprint),
flags: DpapiNGProtectionDescriptorFlags.None);
从 Visual Studio 调试,一切运行良好,但我在管理员权限下运行 VS,所以这里的权限不是问题。
我已经尝试将 AppPool App 用户的权限添加到它直接从 MMC 自己获得的私钥,但它没有工作,甚至授予了对该位置的完整路径的权限,如果密钥应该按照此处所述https:/ /docs.microsoft.com/en-us/aspnet/core/security/data-protection/configuration/overview(检查第一条评论)但它也没有奏效。
我只能通过将 AppPool 设置为以管理员身份运行来使其工作,但显然这是不行的,我只是想确保这是某个地方的权限问题。
有没有人遇到同样的问题可以提供帮助?
问候,安德烈