【问题标题】:Java - Access file with user authenticationJava - 具有用户身份验证的访问文件
【发布时间】:2011-01-19 11:46:40
【问题描述】:

我有一台服务器,我在其中使用 java 应用程序处理数据库和文件。 当我启动我的应用程序时,我会使用以下方式报告有关对服务器的文件访问:

public static boolean folderExists(String folderPath) {
    File folderToCheck = new File(folderPath);
    return folderToCheck.exists();
}

每次我启动我的应用程序(重新启动计算机后) 即使服务器已打开,我也会收到错误的响应。 原因是我必须以另一个用户身份进行身份验证。 我所做的是通过 Windows 访问服务器 我被要求输入用户名/密码的地方, 之后,我得到了关于文件访问服务器的真实响应。

有没有办法通过 Java 提供身份验证用户名/密码, 而不是通过 Windows?

谢谢

【问题讨论】:

    标签: java authentication file-access


    【解决方案1】:

    在 Windows 'native' Java IO(例如 java.io.File)上总是继承运行 JVM 进程的用户的安全上下文。例如,您可以使用正确的凭据将 Java 应用程序作为 Windows 服务运行。

    JCIFS 项目实现CIFS(Windows SMB 文件服务器协议)并允许您直接指定用户名/密码。

    有关示例,请参阅API

    【讨论】:

      【解决方案2】:

      我很确定,没有 Windows 调用,就无法通过 java 授予文件访问权限。

      您可以致电cacls file.log /e /t /p Everyone:f,但这取决于语言。

      我也有类似的问题:How to change the file ACL in windows, if I only know the SID?

      使用 Java7 可能有办法做到这一点。

      【讨论】:

      • 可以通过调用shell命令来实现吗?我没关系。我正在使用 Windows。命令会怎样?
      • 我通过调用 cacls 更改文件的权限 cacls file.log /e /t /p Everyone:f: support.microsoft.com/kb/318754/en 但请注意,登录为“Everyone”的用户可能有不同的名称在本地化的窗口上。对于德语翻译的 windows,调用必须是 cacls file.log /e /t /p Jeder:f
      猜你喜欢
      • 1970-01-01
      • 2015-12-02
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 2010-12-15
      • 1970-01-01
      相关资源
      最近更新 更多