ASP.NET Core 中的密钥不可变性和密钥设置
将对象持久保存到后备存储中后,它的表示形式永远不变。 可以将新数据添加到后备存储中,但永远不能更改现有数据。 此行为的主要目的是防止数据损坏。
此行为产生的一个结果是,将密钥写入后备存储后,它将是不可变的。 密钥的创建、激活和到期日期永远无法更改,但可使用 IKeyManager
撤销它。 此外,其基础算法信息、主密钥材料和静态加密属性也是不可变的。
如果开发人员更改了任何影响密钥持久性的设置,这些更改直到下次生成密钥时才能生效,无论是通过显式调用 IKeyManager.CreateNewKey
还是通过数据保护系统自己的自动密钥生成行为。 影响密钥持久性的设置如下所示:
如果需要在下一次自动轮换密钥时间之前启动这些设置,请考虑显式调用 IKeyManager.CreateNewKey
以强制创建新的密钥。 请记住,在调用中提供显式的激活日期({当前日期 + 2 天} 是一个很好的经验规则,可以让更改有时间传播)和到期日期。
提示
所有接触存储库的应用程序都应使用 IDataProtectionBuilder
扩展方法指定相同的设置。 否则,持久保存的密钥属性将取决于调用密钥生成例程的特定应用程序。
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈