我们有一个OWIN Web Api 2站点,既需要OAuth2安全性,也需要Windows集成安全性。
问题是当访问令牌过期时。 Owin返回401未经授权的响应。这会导致浏览器弹出登录框。 这是因为有带有Negotiate和NTLM值的XXX-Authenticate标头。还有一个有Bearer
但是如果我们在IIS中禁用Windows集成安全性,那么它没有那些标题但只有XXX-Authenticate:Bearer,因此浏览器不会弹出登录窗口。
在客户端,我们希望在令牌过期时捕获错误代码,然后刷新访问令牌。这实际上有效,除了浏览器的丑陋弹出框询问id和密码。
但是我们必须为这个应用程序提供两种混合身份验证类型。
解决方案似乎是为过期的令牌发回不同的http状态代码,以便浏览器不会弹出登录框,我们仍然可以在客户端中捕获该代码。
但是,我没有成功找到如何用OWIN做这件事。
我在堆栈顶部注册了一个中间磨损方法来查看 并修改响应代码,但似乎令牌过期 从OWIN返回200,但在发送时以某种方式变为401 给客户。
如何更改仅为过期令牌返回的状态代码?