2012-07-03 68 views
1

我們使用Shibboleth來認證用戶。它效果很好。Drupal Shibboleth註銷

問題是,在進入用戶/註銷(和,我認爲,實際註銷)後,用戶立即自動重新認證!

想到任何解決方案?

謝謝!

+0

是否可以接受破壞Shibboleth的會議,即用戶將被註銷的任何和他們當前登錄到所有其他服務? –

+0

這對我來說很好。你能指出我的方向來弄清楚嗎? – user2890

+0

當用戶自動重新認證時,瀏覽器是否向IdP發回請求?如果是這樣,* IdP *上的會話仍然有效嗎?您可能需要進行強制重新認證,或只是減少IdP會話有效的時間。 – jbindel

回答

3

這是一個比較複雜的問題,具體取決於你想達到的目標。壞消息是according to people who should know, SingleLogOff basically doesn't work,因爲至少本地應用程序可能會緩存登錄信息,並且沒有可靠的方法告訴所有人將您註銷。

但是,註銷服務提供商的特定會話可能與將用戶發送到 https://yourhost/Shibboleth.sso/Logout?return=http://www.google.com一樣容易,這會破壞該會話並將用戶重定向到給定的URL。

要破壞與IdP的會話,您可能需要一種方法來清除由IdP設置的_idp_session Cookie,如果您控制IdP,則很容易,而如果不這樣做,則很容易。 (該shibd SP不支持告訴IdP進行註銷IdP進行會話,也不過IdP進行沒有。)

編輯時,SHIB 3 RELEASE

Shibboleth的3現在支持SLO

1

單次註銷不起作用 - 不要煩惱尋找它;您可以從SP註銷 - 但是沒有真正的方法從IdP的SSO鏈註銷。

Shibboleth IdP是一個SSO,它緩存一個覆蓋SP上的任何註銷的cookie(唯一的方法是強制用戶在SP註銷後進行身份驗證 - 一個SAM註銷 - 一個SAML配置 - 實際上意味着SP不再接受SSO)。

殺死IdP cookies只會阻止未來的SSO--它不會從任何已有的會話中註銷用戶。

真正註銷SSO世界的唯一方法是終止瀏覽器會話(每種瀏覽器類型都有不同的方式)。

有一些所謂的SLO代理 - 試圖訪問每個在SSO sesson中訪問過的SP,單獨註銷,然後終止IdP會話:在SSO環境中,這是不實際的多個SP(它只需要1次調用就可以讓一個SP失敗,並且你有一個不完整的註銷過程)。

0

@ user353829真正註銷在SSO世界是殺死瀏覽器會話

好吧......這就是部分正確的唯一途徑。 一般SAML2(Shibboleth實施)提供單一註銷規範(page 32)。事情是,實施起來相當棘手(閱讀@Ulrich Schwarz提供的SLOIssues),甚至在培訓用戶正確理解全球註銷(再次仔細閱讀SLOIssues)時更是如此。

但是,如果您完全確定您瞭解SLO真正的工作原理,那麼匈牙利團隊創建working implementation

我目前正在測試它,我已經成功地將它與我的Facebook Login Module整合。它工作得很好。

請記住,這個匈牙利模塊沒有出現在最新的官方Shibboleth版本中。

希望這有助於