我有幾個AngularJS應用程序都使用Spring/Java和SAML 2.0用於SSO(利用Spring Security SAML擴展)。我的SSO id提供程序是OpenAM,一切正常。但是,我遇到了一種情況,即用戶在一個應用程序內執行全局註銷,但打開了其他選項卡。由於這些是單頁網頁應用程序,因此很多功能仍然可以在孤立選項卡中使用,直到用戶做某件事來調用ajax請求。當然,這些AJAX請求會被Spring Security SAML過濾器攔截,並通過REDIRECT向OpenAM登錄URL觸發認證嘗試。當然,這會在瀏覽器中造成嚴重破壞,因爲AJAX請求不允許重定向到另一個域。此外,我不能對Angular的$ http攔截器做任何事情,因爲這些請求被「取消」,並且$ http錯誤回調函數中沒有可用的質量信息(例如方便的401/403狀態碼)。我只知道請求失敗。處理SAML重定向AJAX請求
我不想假設所有壞的$ http請求都是由於身份驗證問題(並執行$ window.location.reload()),因爲可能有合法的失敗原因。我的首選是禁止Spring安全重定向(到OpenAM登錄頁面)ajax請求,而是發回一個401/403狀態代碼。這將允許我處理$ http攔截器中的錯誤,並且如果它是身份驗證失敗,則執行整頁加載,從而優雅地重定向到登錄頁面,就好像他們第一次訪問該網站一樣。
如何完成此任何想法?
Vladimir ... t回答。我在你回覆的時候發現了同樣的解決方案。由於Spring Security非常抽象(自從我深入研究之後已經有一段時間了),我花了一些時間進行挖掘,但最終我發現它是我需要擴展的SAMLEntryPoint。現在我的角$ http攔截器可以在瀏覽器中正確處理403響應。再次感謝! – 2014-09-26 12:12:56
夥計們感謝你們的指導,如果你們中的一個人能夠拿出一個github示例教程,這對你會有很大的幫助。乾杯。 – 2014-11-20 21:01:40