1

我正在使用使用表单身份验证的单个登录页面。此页面在 mysites.com 上创建域 cookie。

我还有其他三个需要身份验证才能访问的网站。在我的页面 loginsso.mysites.com 中,我的 cookie 过期时间设置为 30 分钟。然而,当 cookie 过期时,会发生什么情况,它将把用户踢出我的其他三个站点。

为了使这更复杂,这三个站点中的每一个都有空闲超时。

这就是它的工作原理:

  • 用户登录 mysso.mysite.com
  • 它创建一个域级别的 cookie(这个 cookie 有 30 分钟的超时期限)
  • -mysitea.mysite.com 有 3 个空闲小时到期
  • -mysiteb.mysite.com 有 1 个空闲小时到期
  • -mysitec.mysite.com 有 2 个空闲小时到期
  • 因此,由于 mysso.mysite.com 上的 cookie 规范,登录到 mysso.mysite.com 并导航到 mysiteb.mysite.com 并在那里工作 30 分钟的用户将在 30 分钟后不再能够访问该站点。

    基本上我需要一种方法来处理这个问题。如果用户导航到 mysiteb 并开始工作,他并没有闲着,也不应该被踢出 mysitesso。

    希望这有任何意义。

    我也有可能将 SessionTimeOut 与 CookieExperation 以及它们的处理方式混合在一起。

    4

    1 回答 1

    1

    在您的情况下,为 SSO 和单个应用程序使用会话 cookie。会话 cookie 是没有设置过期日期的 cookie——它会一直保留到浏览器关闭(有关详细信息,请参阅此处)。处理服务器端逻辑中所有应用程序的会话到期,并在发生超时时销毁会话。

    您还应该确保会话 cookie 免受 javascript 访问,以防止 XHR 攻击(适用于所有现代浏览器)。你可以在这里这样做:

    cookie.HttpOnly = true;
    

    有关该属性的更多文档HttpOnly可以在文档中找到,或者通过查找有关表单身份验证的深入文章HttpOnly

    于 2013-04-13T19:59:24.923 回答