我有两个应该使用相同数据保护的asp.net核心api。 (通常是为了获得防伪令牌,我们希望应用程序A能够发布到应用程序B)。 我知道我需要设置一个通用的应用程序名称(如in this SO answer所述,这可行。
var di = new DirectoryInfo(cryptoKeysLocation);
services
.AddDataProtection()
.SetApplicationName("mywebapps")
.PersistKeysToFileSystem(di)
但是,一旦我添加了用于加密密钥的证书,就会得到CryptographicException。
当我查看存储密钥的位置时,我发现现在已经创建了重复的密钥,而不再只是一个密钥。
看起来像这样的额外ProtectKeysWithCertificate使得不可能在应用程序之间共享密钥?
还是我在这里错过了另一个关键步骤?
var di = new DirectoryInfo(cryptoKeysLocation);
services
.AddDataProtection()
.SetApplicationName("mywebapps")
.PersistKeysToFileSystem(di)
.ProtectKeysWithCertificate(new X509Certificate2(certpfx, certpwd));