gpt4 book ai didi

c# - 是否可以禁用 ASP.NET Core 中的数据保护加密?

转载 作者:行者123 更新时间:2023-12-04 17:37:56 28 4
gpt4 key购买 nike

最初在 Startup.cs ,
我们省略了 AddDataProtection()完全调用。当我们尝试部署应用程序时,我们看到:

System.Security.Cryptography.CryptographicException: The key {...} was not found in the key ring.
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.UnprotectCore(Byte[] protectedData, Boolean allowOperationsOnRevokedKeys, UnprotectStatus& status)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.DangerousUnprotect(Byte[] protectedData, Boolean ignoreRevocationErrors, Boolean& requiresMigration, Boolean& wasRevoked)
at Microsoft.AspNetCore.DataProtection.KeyManagement.KeyRingBasedDataProtector.Unprotect(Byte[] protectedData)
at Microsoft.AspNetCore.Session.CookieProtection.Unprotect(IDataProtector protector, String protectedText, ILogger logger)
warn: Microsoft.AspNetCore.Session.SessionMiddleware[7]
Error unprotecting the session cookie.

当我添加 services.AddData.AddDataProtection().SetApplicationName("MyAppName");ConfigureServices() ,我们现在看到部署后
System.Exception: An error was encountered while handling the remote login. ---> System.Exception: Correlation failed.
--- End of inner exception stack trace ---
at Microsoft.AspNetCore.Authentication.RemoteAuthenticationHandler`1.HandleRequestAsync()
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Session.SessionMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddleware.Invoke(HttpContext context)
warn: Microsoft.AspNetCore.Authentication.OpenIdConnect.OpenIdConnectHandler[15]
'.AspNetCore.Correlation.OpenIdConnect.{SomeWeirdString}' cookie not found.


我在谷歌上搜索了很多,似乎解决这个问题的“正确”方法是将加密 key 与 .PersistKeysToFileSystem() 合并在一起。 .有没有替代方案?例如完全禁用加密/数据保护?

对于某些背景,这个应用程序是我们从 ASP.NET 迁移到 ASP.NET Core 的最后阶段,之前我们将 session 状态存储在 Redis 中,没有加密。

最佳答案

数据保护堆栈是必需的,用于保护 cookie、 session 状态、临时数据等中的数据。数据保护将 key 保留在某处以加密和解密数据。有几个选项可以保留 key - 默认情况下,使用文件系统或注册表。当托管在 IIS 或 Azure 中的本地服务器上时,它通常可以正常工作。对于其他部署选项,尤其是使用容器,您通常需要执行一些配置。例如,容器通常具有临时存储,因此在部署新容器实例后加密 key 会丢失。
正如您提到的 Redis,我建议您查看 Redis key 存储提供商:https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/implementation/key-storage-providers?view=aspnetcore-2.2&tabs=visual-studio#redis
以下文档资源也值得一读:

  • General docs on ASP.NET Core Data Protection
  • Configure ASP.NET Core Data Protection
  • 关于c# - 是否可以禁用 ASP.NET Core 中的数据保护加密?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55875440/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com