Встроенное промежуточное ПО для проверки подлинности ASP.NET Core не кэширует openid-config - PullRequest
3 голосов
/ 21 мая 2019

Я использую ASP.NET Core для написания своих API.Я заметил, что когда мой API достигает максимума из-за огромного количества запросов, на этапе аутентификации застревает много запросов.

Этап аутентификации - это этап, на котором проверяется, что токен Bearer является допустимым для поставщика полномочий.,Поставщиком полномочий в моем случае является Azure AD.

Используя Application Insights, я вижу, что любые запросы API сначала идут в API openid-configuration, чтобы получить соответствующую информацию от поставщика полномочий, чтобыв состоянии проверить токен Bearer.

enter image description here

Мне интересно, почему промежуточное ПО не кэширует конфигурацию openid, так как это не очень меняетсячасто - и даже если это простой вызов, когда мой сервис достигает пика ~ 1500 RPS, это становится настоящим бременем.

Интересно, какие настройки я пропустил, что позволяет мне кэшировать этот ответ.(надеюсь, такая настройка существует)

Спасибо!

ОБНОВЛЕНИЕ № 1 (добавлен код):

Способ включения промежуточного программного обеспечения заключается в следующем (в Startup.ConfigureServicesкласс / метод)

services.AddAuthentication(options =>
    {
        options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
        options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
    })
    .AddJwtBearer(options =>
    {
        options.Audience = _settings.AadAudience;
        options.Authority = new Uri(
                baseUri: _settings.AzureAdInstance,
                relativeUri: _settings.AadTenantId.ToString())
            .ToString();
    });

services.AddMvc(options =>
{
    options.Filters.Add(new AuthorizeFilter());
});
...