【发布时间】:2019-09-07 02:48:14
【问题描述】:
在使用有效令牌的 Web API 中使用 JwtBearerAuthentication 时,我偶尔会遇到 401 错误。它似乎在大多数情况下都可以正常工作,但偶尔它会无缘无故地开始 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>
我使用这个 tutorial 构建了应用程序
有人见过这样的事情吗?
【问题讨论】:
标签: c# asp.net asp.net-web-api jwt