Итак, если я не ошибаюсь, проблема в том, что кеширование не работает?
Исходя из вашего кода, кажется, что вы наполовину внедрили кеширование для хранилища ресурсов.
IdentityServer.Options.Caching.ResourceStoreExpiration :
Длительность кэша идентификации и конфигурации ресурса API, загруженных из хранилища ресурсов.
Но:
Этот параметр применяется только в том случае, если в конфигурации служб при запуске было включено соответствующее кэширование .
Поэтому добавление кэширования при запуске должен включить его.
.AddInMemoryCaching()
Затем замените эту строку:
.AddResourceStore<ResourceStore>()
на эту строку:
.AddResourceStoreCache<ResourceStore>()
Обновление:
Я не сделалЗаметьте, но вы добавили .AddResourceStore () дважды.Кроме того, вам не нужно AddInMemoryIdentityResources при добавлении собственного хранилища ресурсов.
Таким образом, ваша окончательная настройка может выглядеть следующим образом:
services.AddIdentityServer(action =>
{
action.Caching = new CachingOptions
{
ResourceStoreExpiration = TimeSpan.FromSeconds(10)
};
})
.AddSigningCredential(CertificateUtil.Load(AppEnvironment.MapToPhysicalFilePath(Configuration["Saml2:SigningCertificateFile"]), Configuration["Saml2:CertificatePassword"]))
.AddSecretValidator<CustomSecretValidator>()
.AddClientStore<CustomClientStore>()
.AddCustomTokenRequestValidator<CustomClientClaimsAdder>()
.AddInMemoryCaching()
.AddResourceStore<ResourceStore>();