Die Multi-Tenant-SAML-Anwendung, an der ich arbeite, verwendet Spring-Security-SAML und enthält zwei Service Provider und einen IDP (Active Directory Federation Services). Der Entwickler, der SSO für diese Anwendung verwendet hat, entschied sich für eine Multi-Tenant-Anwendung, da es sich um eine Anwendung mit zwei verschiedenen Funktionen handelt - im Wesentlichen zwei Anwendungen in einem. Es ist so konzipiert, dass es in einem Browser mit zwei geöffneten Registerkarten verwendet werden kann, sodass eine Oberfläche auf der ersten Registerkarte und die andere auf der zweiten Registerkarte ausgeführt wird. Alles scheint richtig mit Ausnahme eines bestimmten Workflow zu arbeiten:Wie kann ich Global Logout in einer Multi-Tenant-SAML-Anwendung mit Spring-Security-Saml arbeiten?
- Öffnen Sie einen Browser, navigieren Sie zum ADFS Anmeldeseite, und melden Sie sich an, um die Anwendung mit dem ersten Service-Provider
- Öffnen Sie eine andere Registerkarte navigieren Sie zu dem ADFS Anmeldeseite, und wählen Sie den zweiten Dienstanbieter
- eine globale Logout Perform
die Protokolldatei Fehler wie diese enthält:
Message a598hd6ff68479a44c3495f7h4216aa not found in session 11cfm6ja982te14dxxul71iufg Received logout response is invalid InResponseToField in LogoutResponse doesn't correspond to sent message a598hd6ff68479a44c3495f7h4216aa
Ich vermute, dass dies mit der Tatsache zusammenhängt, dass derselbe JSESSIONID-Cookie zwischen den Tabs geteilt wird. Wenn sich also ein SP abmeldet, wird die zugehörige Sitzung beendet. Wenn der andere SP versucht, sich mit derselben Sitzung abzumelden, schlägt die Sitzung fehl, weil die Sitzung beendet ist. Kann mir bitte jemand helfen, dieses Problem zu lösen?