在使用WIFE(被动身份验证)保护的MVC应用程序中加载带有ajax请求的局部视图

时间:2013-08-27 13:35:59

标签: c# asp.net-mvc-4 authentication wif

我正在开发一个使用Windows Identity Foundation保护的MVC4应用程序。

我也使用jQuery($ .ajax())定期刷新部分视图。

此应用程序用于监视某些系统,除部分视图刷新外,不会进行导航。

20分钟后,WIF安全cookie过期,我的应用程序尝试从PassiveSTS页面请求另一个令牌。正如所料,PassiveSTS执行身份验证并重定向到调用URL。

问题是用于加载局部视图的ajax()请求需要HTTP 200代码并接收HTTP 302。

在我看来,Passive身份验证不适用于对部分视图的ajax调用。

这种方法有什么问题?主动身份验证更合适吗?

1 个答案:

答案 0 :(得分:1)

如果调用者未获得授权,Ajax调用应该发出401。问题是WIF假定请求是浏览器并执行重定向。我构建了一个帮助程序来抑制Thinktecture IdentityModel中Ajax调用的这些重定向。您可以使用NuGet中的库,也可以只获取相关代码并将其添加到项目中。

http://brockallen.com/2013/02/19/suppress-login-redirects-for-api-clients-in-wif-with-thinktecture-identitymodel/

https://github.com/thinktecture/Thinktecture.IdentityModel.45/

当然,你的客户端JS在获得401时必须做一些事情,但可能你会告知使用你需要重新登录。

另一件事可能是使用滑动会话,我添加到IdentityModel的另一个功能是:

http://brockallen.com/2013/02/17/sliding-sessions-in-wif-with-the-session-authentication-module-sam-and-thinktecture-identitymodel/