如何通过网站上的会话管理多个州?

时间:2018-03-23 05:18:29

标签: security session authentication token session-state

以下情况非常感谢任何帮助:

Amazon.com如何管理不同级别的身份验证,一次是在您访问网站时,另一次是在您访问"您的帐户" - > "登录&安全"作为安全功能?

用户登录(即验证)网站,7天内没有活动。用户重新访问该网站,然后要求用户再次进行身份验证。这可以使用cookie实现,但由于安全问题,它是使用服务器端的会话令牌实现的。 7天后,当浏览器提供过期令牌时,用户将被要求重新进行身份验证。

现在,新要求是,如果用户登录并访问"您的帐户"页面然后,

  1. 如果用户仍然在"您的帐户"页面并且10分钟没有活动,那么应该要求用户再次重新进行身份验证。
  2. OR。

    1. 如果用户退出"您的帐户"页面并重新访问"您的帐户" 10分钟后的页面,然后应该要求用户重新进行身份验证。
    2. 因此,使用令牌,我只能管理一个不活动的时间段,如何处理多个状态,即状态(7天)和部分状态(10分钟)。

      处理此方案的行业惯例是什么?不想使用cookie作为安全问题。并且当SSO提供程序用于身份验证时,使用数据库将是最后一个选项。

      - 大卫。

1 个答案:

答案 0 :(得分:5)

如何处理这个问题将归结为当前即将到期的会话令牌逻辑的实现细节。

执行此操作的常用方法是将会话令牌存储在数据库或内存缓存中。如果是这种情况,您只需添加一个新列,指示用户何时打开帐户页面。

例如,您的新列可以称为accountSettingsStartTime。通常它没有价值,但是当用户导航到帐户页面时,它将填充当前时间。当用户离开帐户页面时,您可以将其清除。然后,当您检查安全令牌时,您只需检查标准的7天到期时间以及检查accountSettingsStartTime列并确保它在过去10分钟内。

或者,您可以为用户提供一个全新的会话令牌,当他们导航到帐户设置时,会话令牌的有效期为10分钟,并为涉及帐户设置的操作强制使用 令牌。然后,您可以在更改帐户设置时检查该令牌,并要求用户重新进行身份验证(如果已过期)(并使其标准7天令牌无效)。当然,这需要在客户端进行更多努力。

正如他们所说,给猫皮肤化的方法不止一种:)