簡體   English   中英

使用身份驗證將文件復制到Java中的本地網絡中的計算機上

[英]copy files to a machine in local network in java with authentification

我用Commons IO編寫了一個復制文件和其他東西的程序。 但是我想將文件復制到本地IP地址\\\\10.xxx ,但是用戶無權進行復制,因此我需要輸入ID和密碼才能訪問它。 但是,我找不到能夠做到這一點的方法。

要移動文件,我使用:

FileUtils.moveFileToDirectory(fichier, destDir,true);

但是我的目錄類似於\\\\10.xxx\\files ,只有少數用戶可以在該目錄中寫入數據,因此我有一個ID和密碼,可以將文件移動到該目錄中。 我希望即使用戶沒有權限將文件移動到該目錄,我的程序也可以做到。

並不是 Windows安全性真正起作用的方式。 如果您真的想這樣做,則必須使用Java本機接口或Java本機訪問,並設法從Mpr.dll調用WNetAddConnection函數(並且不要忘記在完成后調用WNetCancelConnection )。

但是您將必須在程序中存儲一個密碼,這是不安全的做法。

執行此操作的標准方法是啟動一個服務,該服務將在有權訪問所需目錄的用戶下運行,並讓您的程序使用您想要的任何內容與之進行通信,最簡單的方法可能是TCP / IP。 但是除非您有特殊要求,否則我不建議您將Jave用於此類程序。

Java的另一種選擇是在具有訪問目錄權限的用戶下運行的服務器計算機上啟動Tomcat服務。 這樣,您只需要開發一個標准的Java Web應用程序即可上傳文件,該文件會將文件保存到正確的目錄中。 但這將是不需要JNI或JNA的傳統的可移植Java應用程序。

如果無法使用Tomcat,並且不想在上面進行大量投資,則可以將程序分成幾部分:

  • 一個具有在每個服務器上對每個人都具有文件創建權限的目錄文件(在服務器計算機上)進行復制的客戶端程序,如果無需執行其他操作,或者可以輕松地用Java編寫,則該程序可以降級到copy實用程序
  • 一個服務器程序,它將在具有對目標目錄的完全寫權限的用戶的情況下在服務器計算機上運行。 這個也可以用Java輕松編寫
  • 您可以根據ServerFault上的此答案使用scsrvany輕松地將服務器程序作為服務安裝在服務器計算機上

如果使用客戶端程序,則可以輕松地在每個復制的文件中添加一個數字簽名文件,但是正如我上面所說,這是不安全的做法,並且幾乎沒有任何安全性。 至少程序應該是可執行的並且不可讀,並且源應該保持隱藏。 最好記錄復制文件的用戶,並詢問他們發現問題后發生了什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM