验证用户同步2个不同站点的超时时间

时间:2013-09-11 03:55:20

标签: asp.net asp.net-mvc-4 forms-authentication

我一直在为此感到困惑,想不出这样做的好方法。我正在开发一个网站,要求用户登录才能使用该系统。我正在考虑使用ASP.NET MVC 4的内置身份验证。这不是什么大问题。

用户可以在另一台服务器上使用工具(我们的服务器会对他进行身份验证并告诉其他网站,他很高兴,这些消息是通过HTTPS使用XML传递的)。另一台服务器要求我们为用户创建一个身份验证令牌,以便在我们之间传递消息时使用。

我们需要将令牌保留在我们的数据库中,以便对与其他服务器的每个请求/响应进行身份验证。这意味着这个“令牌表”对我们服务器上的表单身份验证超时一无所知,反之亦然。

现在出现问题,假设用户使用其他服务器的工具。他会在另一台服务器上工作很长时间,这会导致我们服务器上的身份验证将他注销,因为似乎没有任何感知活动。由于我们手动维护令牌,因此其他服务器不会将其注销。这对用户来说会很麻烦,因为现在,如果他需要使用我们的服务,他将不得不再次登录,即使他一直“在线”。

有没有办法“同步”2个身份验证?起初我想让我们的服务器查找“令牌表”(而不是使用内置的身份验证),这样如果最后一个活动是x前,用户将需要再次登录,这将解决不合时宜地从我们的服务器注销。但我担心安全问题。

最好的方法是什么?

谢谢。

德斯蒙德

1 个答案:

答案 0 :(得分:1)

如果我已正确理解您在MVC4应用程序中使用Forms Authentication来验证用户身份,但是用户还将使用位于不同服务器上的其他Web服务,因此当他们使用此其他服务器时不希望MVC4应用程序的身份验证(对于用户)超时。这是对的吗?

如果是这样,我想到的一个想法是,您的MVC4应用程序可以拥有一个外部世界的API,该API将接收用户名并使用RenewTicketIfOld()刷新与故障单关联的计时器。您可以通过其他Web服务器发出HTTP请求,或者只是在页面上放置一些AJAX以在每个页面上调用API。

当然,您需要考虑此方法的安全问题。在不了解您的情况的情况下,我不确定哪种解决方案最好。