在 ASP.NET Core 中的密钥存储格式Key storage format in ASP.NET Core

对象静态存储在 XML 表示形式中。密钥存储的默认目录为%LOCALAPPDATA%\ASP.NET\DataProtection-Keys\。

键作为顶级对象存在于密钥存储库中。按约定键具有文件名key {guid} .xml,其中 {guid} 是密钥的 id。每个这样的文件都包含一个键。文件的格式如下所示。

<键 > 元素包含以下属性和子元素:

  • 密钥的创建、激活和到期日期。

在上面的示例中,密钥 id 是 {80732141-ec8f-4b80-af9c-c4d2d1ff8901},它是在年3月 2015 19 日创建和激活的,它的生存期为90天。(有时激活日期可能会略微早于创建日期,如本示例中所示。这是因为 Api 的工作方式吹毛求疵,在实践中是无害的。)

外部 <描述符 > 元素包含 deserializerType 属性,该属性是实现 IAuthenticatedEncryptorDescriptorDeserializer 的类型的程序集限定名称。此类型负责读取内部 <描述符 > 元素和分析中包含的信息。

如果则包含加密形式的密钥材料的 <encryptedSecret> 元素可能存在。特性 是实现IXmlDecryptor的类型的程序集限定名称。此类型负责读取内部 <encryptedKey> 元素,并对其进行解密以恢复原始纯文本。

与 一样, 元素的特定格式依赖于正在使用中的静态加密机制。在上面的示例中,使用 Windows DPAPI 按注释对主密钥进行加密。

吊销作为顶级对象存在于密钥存储库中。按照约定吊销具有文件名吊销-{timestamp} .xml (用于在特定日期前撤销所有密钥)或吊销-{guid} .xml (用于吊销特定密钥)。每个文件都包含单个 <吊销 > 元素。

对于单个密钥的吊销,文件内容将如下所示。

系统永远不会读取 <原因 > 元素。这只是一个方便的位置,用于存储可供用户阅读的吊销原因。