2016-12-30 106 views
0

我已將WSO2 Identity Server配置爲IDP,並將兩個應用程序配置爲SP。所有的工作很好,除了幾件事情:Spring SAML SSO不共享會話

  • ,當我從一個應用程序註銷,另一個應用程序沒有看到,我被註銷

  • ,當我登錄到一個應用,其他應用程序不要我沒有看到,我登錄

恕我直言,有SSO和SLO的主要原則。

當我檢查SecurityContextHolder.getContext().getAuthentication()時,在註銷或在另一個應用程序中登錄後沒有更改。

也許我應該在每個加載網址之前調用WSO2頁面/ samlsso?

我能做什麼錯?如何從另一個應用程序中檢索該用戶註銷/登錄?

編輯:

例如,WSO2 API管理器存儲有這樣的機制:

  • ,當我從我的應用程序註銷並重新加載Store頁面,然後會重定向到主沒有登錄頁面商店。與登錄相同。

UPDATE:

org.springframework.security.saml.websso.SingleLogoutProfileImpl類中發現的問題。當註銷請求來自WSO2 IS時,比對象AuthenticationSAMLCredential是空值,並且出現錯誤No user is logged in,但是真正的用戶仍然在Spring SAML應用程序中登錄。

同樣的討論是here,但沒有效果:\

回答

1

你必須同時驗證應用程序是否在呼喚身份服務器(IS)使用相同的主機名。例如。 https://is.blahblah.com/samlsso

IS會話基於cookie('commonAuthId'和'samlssoTokenId'cookie是特定的)。如果應用程序使用兩個不同的主機名稱調用IS,則在IS端會創建兩個不同的會話。要使SSO和SLO發生,兩個應用程序必須共享一個IS會話。

+0

相同的域名:https:// localhost:9444/samlsso –