多個Web應用程序的身份驗證協議(如WS-聯邦和SAML協議,即所謂的「被動」的協議,顯然還ASP.NET窗體身份驗證,看this StackOverflow question和AppEngine上,看到this GWT bug comment)失去了原有的「網址片段「,即#號後面的部分。作爲SAML令牌認證的一部分丟失了URL片段;解決方法/標準模式?
會發生什麼情況大致如下:在一個乾淨的瀏覽器(所以沒有緩存的信息/餅乾/登錄信息),我打開URL(1)http://example.com/myapp/somepage?some=parameter#somewhere。這使得瀏覽器請求(2)http://example.com/myapp/somepage?some=parameter,服務器將我重定向到我的身份提供者(包括身份驗證請求中的URL(2)),並最終將我重定向回我來自的URL(2):這是服務器知道的唯一URL。但我想去URL(1),並且URL片段('錨')已經丟失,實際上已經在第一步。
這似乎是這些協議的基本限制,因爲服務器根本看不到URL片段。我知道它根據瀏覽器從服務器請求(2)的規範,當我導航到(1)時,導致對SAML協議,WS聯合會等這種片段丟失的限制。我的問題是:我如何解決這個限制?
顯而易見的解決方法是避免網址片段,如在this answer建議。但是,對於我們特定的Web應用程序來說,這並不好,因爲我們在單頁面GWT應用程序中使用了可加入書籤的URL片段,以確保應用程序內的導航不會導致頁面重新加載。
我的問題:在這種情況下還有其他的解決方法或標準模式嗎?
(我在GWT + SAML協議解決方案特別感興趣。)
我知道了,我已經澄清了相應的問題。我正在尋找解決方法。 –
我編輯了我的答案並添加了解決方法... –