ASP.NET Core内置身份验证中间件不缓存openid-config

时间:2019-05-21 06:13:02

标签: c# asp.net .net asp.net-mvc asp.net-core

我正在使用ASP.NET Core编写我的API。 我已经注意到,当我的API达到大量请求的峰值时,许多请求就会卡在身份验证步骤中。

验证步骤是验证Bearer令牌对授权提供者合法的步骤。 在我的案例中,授权提供者是Azure AD。

使用Application Insights,我可以看到任何API请求,首先转到openid-configuration API,以从授权提供者那里获取相关内容,以便能够验证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());
});

0 个答案:

没有答案