深入了解ASP.NET Web API身份验证

时间:2012-10-04 06:29:46

标签: asp.net asp.net-web-api .net-4.5

我已经进入VS 2012 / MVC 4 / .NET 4.5附带的(相对)新的Web API,并且有一个自定义消息处理程序来处理身份验证的启动和运行。我还设法将它连接到一个很棒的旧.NET 2.0成员资格提供程序。

我现在通过在HTTP请求标头中使用令牌来处理“对每个HTTP请求进行身份验证”问题,我很乐意这样做。

现在,对于移动应用程序,当用户打开应用程序时,我第一次显示登录屏幕,并且不再显示它,除非出于任何原因我收到“未授权”消息。但对于我的基于Web浏览器的项目,我登录一次,浏览器(只要它保持打开状态)将保持身份验证。

使用此类身份验证强制超时的最佳方法是什么?如果有人这样做,我宁愿根据不活动退出。这个让我有点难过,所以任何指导都表示赞赏: - )

谢谢!

1 个答案:

答案 0 :(得分:0)

您需要考虑两个空闲超时。

  1. 服务器端空闲超时,到达您引用的令牌
  2. 客户端(移动应用)空闲超时,指示用户重新输入凭据
  3. 对于#1 ,您必须跟踪哪些令牌处于活动状态,或何时过期等等...有多种方法可以执行此操作。我建议您如何实现它取决于您是部署到IIS还是Azure,以及是否要扩展。通常,您需要一个存储此信息的中心位置。数据库工作,但相对较慢。会话状态可以在Azure中工作,因为会话状态可以通过App Fabric在服务器之间共享,但在IIS中,您必须使用附加组件来跨服务器共享会话状态。如果您在.NET中使用HttpRuntimeCache

    ,也是如此

    还应该注意的是,执行此类检查服务器端是至关重要的,以防止有人劫持您引用的令牌,具体取决于您最终决定实施的方式。

    对于#2 ,我们在iOS应用中所做的是跟踪空闲超时。每次用户在应用程序中输入任何类型的输入(例如BeginTouch事件)时,我们都会停止我们的空闲计时器并重新启动它。定时器配置为在定时器触发时将用户带到登录屏幕。同样的事情应该在Android,WP7等中运行良好。