【问题标题】:JCIFS How to authenciate when folder is shared with Everyone?JCIFS 如何在与所有人共享文件夹时进行身份验证?
【发布时间】:2014-05-08 04:56:49
【问题描述】:

我们有一个场景,我们与组所有人共享一个文件夹(我认为这包括您域中的所有用户)

当我们在 Win+R 中使用 \\server-ip\sharedFolder 时,我们无需任何密码即可连接到文件夹并浏览(我的计算机使用同一域上的用户登录)

当我使用这样的 File 类在 java 应用程序中对其进行编码时

文件 f = new File(\\server-ip\sharedFolder );

它也可以工作,但是我想让我的应用程序也可以在 mac/linux 上工作,所以我试图为此目的使用 JCIFS。但是,当访客帐户也不可用时,我在验证我应该使用什么作为用户名和密码时遇到问题。我试过了

package test;

import java.net.MalformedURLException;

import jcifs.smb.NtlmAuthenticator;
import jcifs.smb.NtlmPasswordAuthentication;
import jcifs.smb.SmbException;
import jcifs.smb.SmbFile;

public class JCIFSTest {
    public static void main(String args[]){
        String user = "";
        String pass ="";

        String sharedFolder="sup";
        String path="smb://server-ip/"+sharedFolder+"/";
        //ntlm
//     NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("",user, pass);
        try {
            SmbFile smbFile = new SmbFile(path,NtlmPasswordAuthentication.ANONYMOUS);
            if(smbFile.isDirectory()){
                for(SmbFile f: smbFile.listFiles()){
                    System.out.println(f.getName());
                    if(f.isDirectory()){
                        for(SmbFile g: f.listFiles()){
                            System.out.println(g.getName());
                        }
                    }
                }
            }
            //SmbFile.
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SmbException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

但这也给出了错误“帐户已禁用”,我猜它试图使用已禁用的用户访客。

因为当使用简单的 \\server-ip\sharedFolder 与 Windows 连接时它可以工作,我认为会有办法做到这一点。 我想弄清楚当我们这样做时windows是如何进行身份验证的???

编辑:找到了方法。您无需添加到允许登录的用户列表中。 如果您在所有人列表中并且该文件夹与所有人共享,则您需要在 NTLM 身份验证期间提供您的用户名和密码,之后可以访问与所有人共享的文件夹

【问题讨论】:

  • 您能否使用您最终使用的代码发布您的编辑作为答案(并接受它)?有些人可能会感兴趣。像我这样的人:)

标签: public smb jcifs


【解决方案1】:

但是这个迟到的回复,但正如 Matheiu 指出的那样,我可能应该在这里写一个答案来帮助别人。

无需更改代码。这更像是一个概念性的东西。

实际上,当您与所有人共享文件时,如果启用了访客帐户,它实际上会与您 DOMAIN 上的所有人或访客共享。

当有人试图访问它时,您需要某种方式来进行身份验证。当您像这样访问它时 \server-ip\sharedFolder 使用 windows 它使用您的登录用户进行身份验证,如果您是同一域的一部分,它会授予您访问权限。

当您使用 linux/mac 通过 JCIFS 进行连接时,您也需要这样做。您需要提供您的用户名和密码,如果您的用户属于该域,您将通过身份验证,并且您可以访问公开共享或与所有人共享的内容。

【讨论】:

  • 如果我的用户名没有密码怎么办。我没有使用密码。
猜你喜欢
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 1970-01-01
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
相关资源
最近更新 更多