我们收到以下错误
IDX10500 Signature validation failed.
Unable to resolve SecurityKeyIdentifier: 'SecurityKeyIdentifier'
with Clause[0]= System.IdentityModel.Tokens.NamedKeySecurityKeyIdentifierClause
仅当IdentityServer.Web项目已发布并且客户端浏览器过去曾访问过该站点时,才会发生此错误。如果刷新浏览器,则显示IdentityServer4登录页面。
我们正在运行IdentityServer4,ASP.Net Core 2.0 并使用应用程序Cookie。该网站作为应用程序服务托管在Azure中。
在ConfigureServices中,我们使用X509证书进行签名-
X509Store certStore = new X509Store(StoreName.My, StoreLocation.CurrentUser);
certStore.Open(OpenFlags.ReadOnly);
X509Certificate2Collection certCollection = certStore
.Certificates
.Find(X509FindType.FindByThumbprint,
Configuration.GetValue<string>("SSL:Thumbprint"),
false);
X509Certificate2 cert = null;
if (certCollection.Count > 0)
{
cert = certCollection[0];
}
certStore.Dispose();
services.AddIdentityServer()
.AddSigningCredential(cert)
我们正在测试使用.net核心数据保护的解决方案-将加密的密钥数据存储在Azure Blob中。我们已经进行了一些初步测试,表明这将解决问题,但我不相信。测试仍在继续。
是否有人遇到过此问题(在发布后,SecurityKeyIdentifier无效)?
我们正在测试的解决方案如下-
Uri blobUriWithSASToken = new StorageAccountService(Configuration).GetStorageAccountBlobWithSASToken2Async().Result;
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(blobUriWithSASToken);