Иногда я получаю 401 сообщение об ошибке при использовании JwtBearerAuthentication в веб-API с допустимым токеном. Кажется, в большинстве случаев он работает нормально, но время от времени он начинает выбрасывать 401 без причины. Я могу использовать почтальон с точно таким же токеном сразу после того, как он выдаст мне ошибку, и она отлично работает.
Кажется, как только он начинает давать 401, они продолжают появляться все чаще и чаще, пока приложение не станет непригодным для использования. Затем я перезагружаю пул приложений, и он, похоже, на некоторое время восстанавливается. Использование памяти, кажется, не выходит из-под контроля, поэтому я не думаю, что это утечка памяти.
Вот конфигурация при запуске
var configurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
authority + "/.well-known/openid-configuration",
new OpenIdConnectConfigurationRetriever(),
new HttpDocumentRetriever());
app.UseJwtBearerAuthentication(new JwtBearerAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Active,
TokenValidationParameters = new TokenValidationParameters
{
ValidAudience = "AUDIENCE",
ValidIssuer = authority,
IssuerSigningKeyResolver = (token, securityToken, identifier, parameters) =>
{
var discoveryDocument = Task.Run(() => configurationManager.GetConfigurationAsync()).GetAwaiter().GetResult();
return discoveryDocument.SigningKeys;
}
}
});
Вот соответствующие пакеты
<packages>
<package id="Microsoft.IdentityModel.JsonWebTokens" version="5.3.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Logging" version="5.3.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Protocols" version="5.3.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Protocols.OpenIdConnect" version="5.3.0" targetFramework="net462" />
<package id="Microsoft.IdentityModel.Tokens" version="5.3.0" targetFramework="net462" />
<package id="Microsoft.Owin" version="4.0.0" targetFramework="net462" />
<package id="Microsoft.Owin.Host.SystemWeb" version="4.0.0" targetFramework="net462" />
<package id="Microsoft.Owin.Security" version="4.0.0" targetFramework="net462" />
<package id="Microsoft.Owin.Security.Jwt" version="4.0.0" targetFramework="net462" />
<package id="Microsoft.Owin.Security.OAuth" version="4.0.0" targetFramework="net462" />
<package id="System.IdentityModel.Tokens.Jwt" version="5.3.0" targetFramework="net462" />
</packages>
Я создал приложение, используя учебник
Кто-нибудь видел что-нибудь подобное раньше?