Visual Studio 未处理的异常,系统,安全性,加密,加密异常:在钥匙圈中找不到钥匙{....}

ldioqlga  于 2023-01-09  发布在  其他
关注(0)|答案(2)|浏览(132)

我正在使用VS 2022与dotnet核心网络API和以下是我的代码在Program.cs的数据保护。

string appName = "My_WebAPI";
var dataProtectionProvider = DataProtectionProvider.Create(appName);
IDataProtector dataProtector = dataProtectionProvider.CreateProtector(ApplicationConstants.ENCRYPTION_KEY);
string DbContext = dataProtector.Unprotect(builder.Configuration.GetConnectionString("DbContext"));

这段代码在IIS express中运行得非常好,但是当我在IIS中托管时,我得到了下面的错误。
未处理的异常。系统。安全性。加密。加密异常:在密钥环中找不到密钥{....}。有关详细信息,请转到Microsoft上的http://aka.ms/dataprotectionwarning. AspNetCore. DataProtection. KeyManagement. KeyRingBasedDataProtector. UnprotectCore(Byte [] protectedData,布尔值allowOperationsOnRevokedKeys,UnprotectStatus &状态),位于Microsoft. AspNetCore.数据保护.密钥管理.基于密钥环的数据保护器. Unprotect Microsoft中的(Byte [] protectedData)。AspNetCore。数据保护。数据保护公用扩展。取消保护(ID数据保护器保护器,字符串保护数据)
请帮助我解决这个问题,我在DotNet Core 6中找不到任何类似的问题。从DotNet Core 5到6的"ConfigureServices"中有一些变化。我设法使它在6中工作,但它只在调试模式下工作。在托管到IIS后,不工作。
另外,当我把项目移到一个新文件夹时,发现以前加密的数据无法解密。不知道为什么会这样。我忘记捕获异常。

    • 编辑除上述内容外,在IIS Express中运行时加密的数据无法在IIS中运行时解密。有人遇到过同样的问题吗?我在IIS中托管后刚刚尝试加密和解密,它工作正常,没有发现类似在密钥环中找不到密钥{....}**的异常但我可能必须连接代码库并调试从IIS中托管的应用程序加密的数据。

谢谢。

b5buobof

b5buobof1#

以下步骤应可解决此问题:
1.在IIS管理器、应用程序池、高级设置...中,将标识更改为内置帐户:网络服务
1.在IIS管理器、应用程序池、高级设置...中,将“加载用户配置文件”更改为True
1.重新启动IIS服务器。

mutmk8jj

mutmk8jj2#

我在跨程序传输数据时遇到了类似的问题。它在本地运行,but.net核心阻止在服务器上托管时检索加密值。当我添加数据保护文件存储时,它运行。
您可以根据需要使用文件存储、数据库存储、redis和azure存储。(https://learn.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-7.0&tabs=visual-studio

builder.Services.AddDataProtection()
  .SetApplicationName("App Name")
  .PersistKeysToFileSystem(new DirectoryInfo(@"C:\temp-keys\"))
  .ProtectKeysWithDpapi();

相关问题