我一直对此感到困惑,想不出一个好办法。我正在开发一个网站,将要求用户登录使用该系统。我正在考虑使用内置于身份验证中的ASP.NET MVC 4。这没什么问题。
用户可以在另一台服务器上使用工具(我们的服务器将对他进行身份验证并告诉另一个网站,他很好,这些消息是通过使用XML的HTTPS传递的)。另一台服务器要求我们创建一个身份验证令牌,供用户在我们之间传递消息时使用。
我们需要将令牌保存在数据库中,以便与其他服务器验证每个请求/响应。这意味着,这个“令牌表”对我们服务器上的表单身份验证超时和反向消息一无所知。
现在的问题是,假设用户使用其他服务器的工具。他会在另一个服务器上呆很长一段时间,这将导致我们服务器上的身份验证将他注销,因为似乎没有任何活动。另一台服务器不会将他注销,因为我们正在手动维护令牌。这对用户来说将是一个麻烦,因为现在,如果他需要使用我们的服务,他将不得不再次登录,即使他一直“在线”。
有办法“同步”这两个身份验证吗?起初,我想让我们的服务器查找“令牌表”(而不是使用内置的身份验证),这样如果最后一次活动是x之前,用户将需要再次登录,这将解决我们的服务器不及时的注销问题。但我担心的是安全问题。
做这件事最好的方法是什么?
谢谢。
德斯蒙德
发布于 2013-09-10 20:57:05
如果我正确地理解了您的意思,那么您正在使用表单认证在MVC4应用程序中对用户进行身份验证,但是用户也将使用位于不同服务器上的另一个web服务,因此在使用其他服务器时,您不希望MVC4应用程序的身份验证(对于用户)超时。对吗?
如果是这样的话,脑海中浮现的一个想法是,您的MVC4应用程序可以有一个到外部世界的API,该API将接收用户名并使用RenewTicketIfOld()刷新与票证相关的计时器。您可以通过另一个web服务器发出HTTP请求,或者简单地在页面上放置一些AJAX来调用每个页面上的API。
当然,您需要考虑这种方法的安全性问题。在不了解你的情况的情况下,我不知道什么是最好的解决方案。
https://stackoverflow.com/questions/18732400
复制