Cookies 在docker映像启动之间保持ASP.NET核心身份验证Cookie

Cookies 在docker映像启动之间保持ASP.NET核心身份验证Cookie,cookies,docker,asp.net-core,asp.net-core-mvc,asp.net-core-identity,Cookies,Docker,Asp.net Core,Asp.net Core Mvc,Asp.net Core Identity,每次包含.NET Core MVC web应用程序的Docker映像启动时,所有身份验证Cookie都会失效,这可能是由于生成了新的机器密钥(在签署Cookie时使用) 这通常可以通过.NET应用程序的web.config中的元素进行设置 表明DataProtection包符合要求,但该包似乎需要完整的fat框架 确保每次Docker映像重新启动时不会使现有的身份验证Cookie无效的正确方法是什么?您希望将数据保护密钥放在持久和可共享的位置 如果您使用的是AWS,那么只需几行配置代码就可以将密

每次包含.NET Core MVC web应用程序的Docker映像启动时,所有身份验证Cookie都会失效,这可能是由于生成了新的机器密钥(在签署Cookie时使用)

这通常可以通过.NET应用程序的
web.config
中的
元素进行设置

表明
DataProtection
包符合要求,但该包似乎需要完整的fat框架


确保每次Docker映像重新启动时不会使现有的身份验证Cookie无效的正确方法是什么?

您希望将数据保护密钥放在持久和可共享的位置

如果您使用的是AWS,那么只需几行配置代码就可以将密钥环放在S3上。此外,您还可以利用AWS KMS对密钥进行加密,这对于实现一致的加密算法特别有用,允许在具有不同默认加密算法的不同操作系统之间重用相同的密钥。KMS选项也是同一库的一部分


如果您在AWS以外的其他平台上,则需要另一个库或装载共享驱动器。但是为密钥共享同一位置的概念保持不变。

Cookie失效还是会话失效?如果是会话,您是将会话状态保留在进程中还是外部?请查看这篇关于ASP.NET Core 1.1 preview1的博文。在文章末尾,有一个关于将数据保护与Redis或Azure存储结合使用的新功能。然而,ASP.NET Core 1.1仍然是一个预览版本,预计将于2016年第4季度/2017年第1季度发布。此外,当前和1.1数据保护都支持netstandard,请参见以下措辞:cookie是客户端。它们在服务器上加密。如果私钥更改,以前生成的cookie将无法再解密。我不知道所有的细节,但我假设这个包可能是通过另一个包引用的。例如,Microsoft.AspNetCore.Authentication.Cookies引用了它。非常感谢您的回答。我真的在寻找一种方法,将其直接放到web应用程序中,而不是依赖外部平台。在理想情况下,我只需在配置文件中指定机器/解密密钥。您也可以通过手动将密钥放入指定的目录来实现这一点。请注意,您需要管理续订,以防您的服务在到期之前无法重新部署。