【发布时间】:2015-11-26 02:16:30
【问题描述】:
所以我有一个 MVC6 应用程序,其中包括一个身份服务器(使用 ThinkTecture 的 IdentityServer3)和一个 MVC6 Web 服务应用程序。
在 Web 服务应用程序中,我在 Startup 中使用此代码:
app.UseOAuthBearerAuthentication(options =>
{
options.Authority = "http://localhost:6418/identity";
options.AutomaticAuthentication = true;
options.Audience = "http://localhost:6418/identity/resources";
});
然后我有一个控制器,其动作具有Authorize 属性。
我有一个 JavaScript 应用程序,它通过身份服务器进行身份验证,然后使用提供的 JWT 令牌访问 Web 服务操作。
这行得通,我只能使用有效令牌访问该操作。
问题出现在 JWT 过期时。我得到的是一个冗长的 ASP.NET 500 错误页面,它返回以下异常的异常信息:
System.IdentityModel.Tokens.SecurityTokenExpiredException IDX10223:生命周期验证失败。令牌已过期。
我对 OAuth 和一般的 Web API 保护还很陌生,所以我可能不太了解,但对于过期的令牌来说,500 错误似乎不适合我。这对 Web 服务客户端肯定不友好。
这是预期的行为吗?如果不是,我需要做些什么来获得更合适的响应吗?
【问题讨论】:
-
我也遇到了同样的问题。很想知道在哪里捕获异常并返回 401。
-
您是否仍然看到建议的修复存在此问题?
标签: oauth-2.0 asp.net-core jwt identityserver3