我遇到以下問題。在一臺服務器上,我有一個文件夾/ protected /需要使用SAML令牌進行身份驗證。在受保護的站點上無法啓動Java Web Start
當我嘗試訪問此文件夾中的資源時,我首先被重定向到登錄頁面,登錄後我可以訪問資源。
現在,我在/ protected /文件夾中添加了一個.jnlp文件,其中包含所有必需的資源。當我嘗試訪問.jnlp文件時,我得到了預期的登錄頁面。登錄Java Web Start後,初始化並嘗試下載資源。
但是,Smart Start立即失敗,抱怨它無法解析.jnlp文件。當我查看調試控制檯時,我看到Java下載了,而不是jnlp文件,登錄頁面。因此,Java Web Start應用程序似乎並不共享瀏覽器的憑據,因此它需要新的登錄信息。我的身份提供程序是ZXID,我們正在使用SAML。我會假設Java Web Start必須以某種方式使用與瀏覽器相同的SAML令牌,對吧?它是否正確?可能嗎?
所以在我的調查到目前爲止,似乎當瀏覽器發現一個.jnlp文件,它會立即啓動Java和Java應用程序會嘗試下載JNLP,創造了這個問題。我確實發現JNLP文件不能包含代碼庫條目。否則,Java虛擬機將嘗試重新下載該文件,但由於它未經過身份驗證,它將獲得登錄頁面。
但是,如果可以讀取JNLP,則資源也不能位於受保護區域中,因爲JWS再次未通過身份驗證。
所以我想,需要的是JWS VM以某種方式從瀏覽器獲取會話ID,因此它被認爲是Authenticated。
任何想法?
_Tentative:_也許使用密鑰庫與JWS幫助(網頁搜索)。否則,你也許需要一個做它自己的URLConnection啓動origial JNLP下載未受保護的裝載機(JNLP /小程序/ JS)。魔術給我。 –
也許一個鏈接URL改寫爲「xyz.JNLP?JSESSION_ID = ...」? –