Мы получаем следующую ошибку
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, которое хранит зашифрованные данные ключа в BLOB-объекте Azure. Мы провели предварительное тестирование, которое показывает, что это решит проблему, но я не уверен. Тестирование продолжается.
Кто-нибудь сталкивался с этой проблемой раньше (SecurityKeyIdentifier недействителен после публикации)?
Решение, которое мы тестируем, ниже -
Uri blobUriWithSASToken = new StorageAccountService(Configuration).GetStorageAccountBlobWithSASToken2Async().Result;
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(blobUriWithSASToken);