2012-01-26 125 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等,具體取決於你可以放在其他領域)。這不是一個安全的解決方案,但比單一註銷更好。

服務器端選項

做服務器端的方法是:

對域的任何一個註銷無效它的餅乾,然後要麼重定向或回調在中央單點登錄服務器讓它知道用戶已註銷。然後,要麼服務器上的單點登錄呼叫用戶已登錄的所有域,並要求他們將該用戶登出或讓該域定期輪詢返回單點登錄服務器以檢查單點登錄會話是否已過期。

見以下任何詳細信息: