1

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

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

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

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

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

最好的方法是什么?

谢谢你。

德斯蒙德

4

1 回答 1

1

如果我对您的理解正确,您在 MVC4 应用程序中使用表单身份验证来验证用户身份,但用户还将使用位于不同服务器上的另一个 Web 服务,因此当他们使用其他服务器时,您不需要 MVC4 应用程序的身份验证(对于用户)超时。那是对的吗?

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

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

于 2013-09-11T04:57:05.870 回答