每次启动包含.NET Core MVC Web应用程序的Docker镜像时,所有身份验证cookie都会失效,这大概是由于生成了新的机器密钥(用于对cookie进行签名时使用)。
传统上,可以通过.NET应用程序<machineKey/>
中的web.config
元素进行设置。
This link建议DataProtection
软件包适合该法案,但该软件包似乎需要完整的胖框架。
确保每次重新启动Docker镜像都不会使现有的身份验证cookie无效的正确方法是什么?
最佳答案
您想将用于数据保护的密钥放在一个持久且可共享的位置。
如果您使用的是AWS,则AspNetCore.DataProtection.Aws只需几行配置代码即可将密钥环放到S3上。此外,您可以利用AWS KMS对密钥进行加密,这对于实现一致的加密算法特别有用,从而可以在具有不同默认加密算法的不同操作系统中重复使用同一密钥。 KMS选项也是同一库的一部分。
如果您使用的平台不是AWS,则需要另一个库或安装共享驱动器。但是共享密钥的相同位置的概念仍然相同。