oauth-2.0 – 在MVC6应用程序中的OAuth令牌到期
所以我有一个包含身份服务器(使用ThinkTecture的IdentityServer3)和MVC6 Web服务应用程序的MVC6应用程序.
在Web服务应用程序中,我在启动时使用此代码: 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错误页面,它返回以下异常的异常信息:
对于OAuth而言,我非常新颖,并且保护了Web API,所以我可能会偏离基数,但是对于一个过期的令牌来说,一个500错误似乎不适合我.对于Web服务客户端绝对不友善. 这是预期的行为,如果不是,有什么需要做的,以获得更适当的回应? 解决方法
编辑:在ASP.NET Core RC2中修复了此错误,并且不再需要此答案中描述的解决方法.
注意:此解决方法将无法在ASP.NET 5 RC1,due to this other bug上运行.您可以迁移到RC2夜间构建或创建自定义中间件,捕获JWT承载中间件抛出的异常并返回401响应: app.Use(next => async context => { try { await next(context); } catch { // If the headers have already been sent,you can't replace the status code. // In this case,throw an exception to close the connection. if (context.Response.HasStarted) { throw; } context.Response.StatusCode = 401; } }); 可悲的是,这是JWT / OAuth2承载中间件(由MSFT管理)目前默认工作的方式,但最终应该是固定的.有关更多信息,请参阅此GitHub门票:https://github.com/aspnet/Security/issues/411 幸运的是,您可以通过使用AuthenticationFailed通知“轻松”解决此问题: app.USEOAuthBearerAuthentication(options => { options.Notifications = new OAuthBearerAuthenticationNotifications { AuthenticationFailed = notification => { notification.HandleResponse(); return Task.FromResult<object>(null); } }; }); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- .net – 在Map中注入时,StructureMap会警告 – 为什么?
- asp.net 读取配置文件方法
- 调试时无法更改ASP.NET代码隐藏
- asp.net – 如何从WCF客户端拦截raw soap request / respon
- asp.net – 如何将CssClass应用于DataGrid HyperLinkColumn
- asp.net-mvc – 在ASP.NET MVC中从相同的路由URL路径提供图
- 从ASP.NET Core 3.0 preview 特性,了解CLR的Garbage Colle
- ASP.NET Core 企业级开发架构简介及框架汇总
- ASP.NET MVC中的QR代码生成
- .net – oData v4简单来说什么是函数和动作?
- [转]谈谈技术原则,技术学习方法,代码阅读及其它
- ASP.NET – UpdatePanel和JavaScript
- asp.net – StyleCop vs ReSharper和一般编码风格
- 在updatepanel asp.net c#中的AsyncFileUpload中
- asp.net-web-api – 可以从Request对象获取当前的
- 在使用ASP.NET MVC的Action方法中使用哪种重定向
- mvc项目架构分享系列之架构搭建之Repository和Se
- asp.net-mvc – 分页助手asp.net mvc
- asp.net – 如何使用MVC Razor生成SVG
- ASP.NET 存取EXCEL 使用NPOI相关小技巧