2013-01-13 55 views
2

我遇到以下問題。在一臺服務器上,我有一個文件夾/ p​​rotected /需要使用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。

任何想法?

+0

_Tentative:_也許使用密鑰庫與JWS幫助(網頁搜索)。否則,你也許需要一個做它自己的URLConnection啓動origial JNLP下載未受保護的裝載機(JNLP /小程序/ JS)。魔術給我。 –

+1

也許一個鏈接URL改寫爲「xyz.JNLP?JSESSION_ID = ...」? –

回答

1

到目前爲止,我還沒有找到適當的解決方案來解決這個問題。我做了以下內容,它的工作:

  • 創建我的服務器上的一個保護區,並加入一個Servlet背後
  • 我的servlet創建上飛JNLP文件,與會話ID。
  • JNLP文件用於從公共位置下載JAR
  • 會話ID由Web Start應用程序用於從受保護區域加載資源。