В катана Web API, я использую:Хороший алгоритм для загрузки и кэширования открытого ключа подписи для маркера проверки
appBuilder.UseIdentityServerBearerTokenAuthentication(
new IdentityServerBearerTokenAuthenticationOptions
{
Authority = "https://...",
ValidationMode = ValidationMode.Local,
RequiredScopes = new[] { "..." },
});
Это, как представляется, хорошо найти открытого ключа подписи (ов) от органа и (надеюсь,?) кешировать их и т. д. Хотя я и не пробовал, я понимаю, что есть эквивалент для ASP.NET Core.
Теперь мне нужно сделать то же самое, но не в промежуточном программном обеспечении web api. Поэтому я пытаюсь найти код, который IdentityServer3.AccessTokenValidation.IdentityServerBearerTokenValidationMiddleware использует для этого. Все, что я вижу, это то, что он вызывает UseOAuthBearerAuthentication, который, похоже, находится в Microsoft.Owin.Security.OAuth. Я не смог найти версию этого исходного кода, которая, похоже, соответствует сигнатуре.
Мне кажется, что под обложками кто-то, вероятно, использует System.IdentityModel.Tokens.JwtSecurityTokenHandler и помещает хороший небольшой фрагмент кода в средство эмитентовSigningKeyResolver параметров TokenValidationParameters. Этот милый маленький фрагмент получает ключи подписи из адреса метаданных. Кто-нибудь знает, что это за код, или у него есть что-то хорошее? Очевидно, я мог бы написать это, но мне не нравится изобретать колесо, плюс мой не будет проверен.