2016-09-24 32 views
0

我們需要通過http(s)讀取需要通過不同協議進行驗證的文件。我認爲,我們需要處理:如何通過https讀取文件 - 所有驗證方法(Java)

  • 基本
  • 文摘
  • 的Windows(我認爲這是一樣的NTLM?)
  • 的SharePoint(通過FBA)
  • 索賠基於對OData的接入認證的MS & MS Dynamics。
  • 許多在登錄時提供令牌的系統必須放置在每次讀取的標題中。

在Java 6和/或覆蓋所有這些情況的Apache庫中是否有一種方法可以做到這一點?如果沒有,我知道如何做基本,摘要,&頭注入,但有什麼顯示如何爲Windows,SharePoint FBA,& CBA?

並且有沒有在我的上面列表中有任何常用的協議?這是隻讀的,所以不需要WEBDAV。

至於爲什麼這樣一個包羅萬象的需求,這是我們出貨的商業圖書館。我不知道我們的客戶將面臨什麼,所以我想嘗試和涵蓋任何可能性。

謝謝 - 戴夫

+0

請參閱'java.net.Authenticator'。 – EJP

+0

@EJP - 這個類不會提示用戶輸入所需的信息嗎?我們通常在運行10,000個報告的服務器上使用,並且沒有UI。 –

+0

您不會通過https閱讀_files_。您閱讀HTTP資源。他們沒有文件連接,除非服務器碰巧創建一個文件。也許閱讀Apache HTTP組件的文檔可以幫助你? – bmargulies

回答

0

這裏是一個 '答案',排序的。

在解決你寫的問題之前,我想向你提出一個挑戰:爲什麼你的圖書館需要負責打開遠程資源?大多數庫API都被編寫爲接受輸入爲InputStreamPath,並將其留給應用程序調用它們來解決如何訪問(在前一種情況下)訪問感興趣的特定資源(無論是本地的,遠程的還是發明的)蒼蠅。此外,對Java 1.6的限制現在已經不被支持,並且通常被認爲已經過時,這將嚴重限制您在提供更廣泛的功能方面找到開源協助的能力,「您可以使用InputStream來調用」。

但是,已經寫道,通過HTTP/HTTPS提供的資源和通過其他協議可用的資源之間存在很大差異。 Java本質上支持HTTP,而像hc.apache.org這樣的庫提供了一些更令人討厭的細節方面的廣泛幫助(儘管在一段時間內還沒有1.6兼容版本)。

如果您覺得有必要支持HTTP以外的協議,那麼您將面臨更加困難的環境。在最主要的Linux生態系統中,通常的下一個事情就是SSH協議,對此它有很好的開源替代品。對於諸如CIFS(Windows共享)等專有協議,更不用說特定於微軟的項目,谷歌會爲您提供所有答案,這就是爲什麼「尋求非現場資源或圖書館」的問題'在這裏正式脫離主題。要讓客戶啓用對資源的HTTP訪問,您可能會更好。

+0

在你的挑戰中的好問題。 1)對於數據源或模板,我們請求一個流。但是在模板中可以有一個導入標籤,它提供了我們從中提取數據的url。沒有辦法在那裏獲得流。 2)Java 1.6仍然受到Oracle的支持,因此作爲一個庫,我們必須製作我們的LCD。 –

+0

Java 1.6只支持那些支付額外資金的人。無論如何,如果它總是_a URL_,那麼http庫就是你所需要的,除非微軟真的將奇怪的專有認證分層到HTTP上。 – bmargulies