我正在使用ASP.NET Core
编写我的API。
我已经注意到,当我的API达到大量请求的峰值时,许多请求就会卡在身份验证步骤中。
验证步骤是验证Bearer
令牌对授权提供者合法的步骤。
在我的案例中,授权提供者是Azure AD。
使用Application Insights,我可以看到任何API请求,首先转到openid-configuration
API,以从授权提供者那里获取相关内容,以便能够验证Bearer令牌。
我想知道中间件为什么不缓存openid配置,因为这种配置不会经常更改-即使这是一个简单的调用,当我的服务达到1500 RPS时,它就变成了真正的负担。
想知道我错过了什么设置,可以让我缓存此响应。 (希望这样的设置存在)
谢谢!
启用中间件的方式如下(在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());
});