2012-01-26 95 views
0

我创建SingleSignOn系统,我有一个大问题。从其他域删除cookie

比方说,我有3个领域 - DOMAIN1DOMAIN2DOMAIN3

我登录在所有这些领域的。

我想在DOMAIN3注销,然后自动在DOMAIN1DOMAIN2被注销。

是否可以删除一些饼干DOMAIN1DOMAIN2当我在DOMAIN3

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

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

+0

你在使用管理Cookie? –

回答

0

不,您不能删除cookie。
单点登出的方法:SingleSignOn系统必须记住登录的用户和登录用户的应用程序,当用户注销(或票据/会话过期)时,SingleSignOn系统必须在用户登录的所有应用程序上调用登出URL。该方法在Central Authentication Service中实施。

0

这是单点登出或单点登出问题。通常,您不能从除用户当前正在访问的域以外的域中删除Cookie(否则您可以操纵Facebook cookie)。这就是说,我假设你有过这些领域的一些控制,所以你有几个选择:

客户端选项

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

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

你能范围的cookie被附加到.example.com的域。

如果这是不可能的(因为它们是客户域),但你有它们的列表,你可以让注销过程依次调用每个应用程序(注销像素,注销ajax等,具体取决于你可以放在其他领域)。这不是一个安全的解决方案,但比单一注销更好。

服务器端选项

做服务器端的方法是:

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

见以下任何详细信息: