2011-08-09 55 views
3

我開發了一個基於HTTP安全性的Web服務器上的Java Web Start應用程序。 一旦我登錄到啓動我的Java Web Start應用程序的網頁,應用程序會再次要求我進行身份驗證,即使我勾選「將此密碼保存到密碼列表」,它也會再次提示此驗證對話框。Java Web Start不斷要求認證

如果我沒有錯,這是因爲它試圖訪問其他罐子。

我想知道是否有定義或自動通過驗證用戶名和密碼才能擺脫這惱人的「功能」

感謝您的幫助

+0

我想指定我已經簽署了應用程序的所有罐子 – Mallinok

+0

什麼是''設置?您是否接受用於簽署JAR的證書? – trashgod

+0

@trashgod因爲應用程序需要讀取和寫入到本地計算機,我不得不將安全設置爲: <全權限/> Mallinok

回答

2

號必須在驗證的方式服務器訪問應用程序,並且您必須向客戶端進行身份驗證才能允許<all-permissions/>。以客戶操作系統提供的方式接受提供的證書應該排除重複的憑證請求。作爲參考,此example已簽名,但不需要<security>

+0

什麼我不清楚的是,爲什麼Java Web Start的是要求網絡服務器認證,它不應該只是要求用戶接受證書嗎? – Mallinok

+0

啊,JWS必須檢查服務器的更新; ''offline-allowed />'可能會有所幫助。在JAR簽名後,爲什麼不通過'http'來提供應用程序?這也會更快。 – trashgod

+0

呃好的,離線允許已經設置,是否有避免尋找更新的步驟? 原因是我想授予對該應用程序的訪問權限,僅限於已認證的用戶 – Mallinok

2

可能是因爲User-Agent HTTP請求標頭不一樣。

當您瀏覽到您的Web Start的頁面,您的瀏覽器發送帶有 的User-Agent向HTTP服務器的請求:任何瀏覽器使用的是

當JRE要求被從下載JAR文件HTTP服務器,其發送 用戶代理的請求:任何Java版本使用的是

從HTTP服務器的角度來看,這是2個不同的客戶,因此係統會提示您兩次憑據。

+0

如果是這種情況,是否可以將驗證參數從一個代理傳遞給另一個代理? – Mallinok

+0

這對我來說也可以硬編碼用戶名和密碼,但是我應該設置什麼System屬性? – Mallinok

+1

@Mallinok:你可以用類似於http:// user:[email protected]/file.jar的方式配置jnlp文件中的所有URL,但請記住任何人都可以通過下載來查看你的憑證jnlp文件。這不被推薦。爲什麼不將密碼保護文件夾外的jar文件託管? –