OWIN过期令牌的自定义响应代码

时间:2015-05-13 21:32:36

标签: c# iis asp.net-web-api2 owin

我们有一个OWIN Web Api 2站点,既需要OAuth2安全性,也需要Windows集成安全性。

问题是当访问令牌过期时。 Owin返回401未经授权的响应。这会导致浏览器弹出登录框。 这是因为有带有Negotiate和NTLM值的XXX-Authenticate标头。还有一个有Bearer

但是如果我们在IIS中禁用Windows集成安全性,那么它没有那些标题但只有XXX-Authenticate:Bearer,因此浏览器不会弹出登录窗口。

在客户端,我们希望在令牌过期时捕获错误代码,然后刷新访问令牌。这实际上有效,除了浏览器的丑陋弹出框询问id和密码。

但是我们必须为这个应用程序提供两种混合身份验证类型。

解决方案似乎是为过期的令牌发回不同的http状态代码,以便浏览器不会弹出登录框,我们仍然可以在客户端中捕获该代码。

但是,我没有成功找到如何用OWIN做这件事。

我在堆栈顶部注册了一个中间磨损方法来查看 并修改响应代码,但似乎令牌过期 从OWIN返回200,但在发送时以某种方式变为401 给客户。

如何更改仅为过期令牌返回的状态代码?

0 个答案:

没有答案