从其他域删除cookie

时间:2012-01-26 10:08:24

标签: java cookies single-sign-on

我正在创建SingleSignOn系统,我有一个大问题。

假设我有3个域名 - domain1 domain2 domain3

我已登录所有这些域名。

我想在 domain3 中退出,然后自动在 domain1 domain2 中注销。

当我在 domain3 时,是否可以删除 domain1 domain2 中的某些Cookie?

解决方案是从一个域重定向到另一个域,但这是一个难看的解决方案,我想清楚地做到这一点。

也许您对如何解决这个问题有一些想法?

2 个答案:

答案 0 :(得分:0)

不,你不能删除cookie 单点注销的方法:SingleSignOn系统必须记住用户注销时记录的用户和应用程序,当用户注销(或票证/会话到期)时,SingleSignOn系统必须在用户被记录的所有应用程序上调用注销URL。这种方法在Central Authentication Service中实现。

答案 1 :(得分:0)

这是单点注销或单点注销问题。通常,您不能从用户当前访问的域之外的域中删除cookie(否则您可以操作Facebook Cookie)。也就是说,我假设你对这些域有一些控制权,所以你有几个选择:

客户端选项

如果域是同一根域的子域,例如

  • billing.example.com
  • crm.example.com
  • reports.example.com

您可以将Cookie范围附加到.example.com域。

如果这不可能(因为它们是客户域)但你有一个列表,你可以让注销过程依次调用每个应用程序(注销像素,注销ajax等取决于什么你可以穿上其他域名)。这不是一个安全的解决方案,但优于单一注销。

服务器端选项

服务器端的方法是:

在任何一个域上注销使其cookie失效,然后重定向或回调到服务器上的中央单点登录,让它知道用户已经注销。然后,要么让服务器上的单一登录呼叫用户已登录的所有域,并要求他们将该用户登出,要么让域定期轮询到单点登录服务器以进行检查单点登录会话是否已过期。

有关详细信息,请参阅以下任何内容: