JCIFS与Everyone共享文件夹时的认证方式



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

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

当我在java应用程序中使用文件类编写时,像这样

File f = new File(\server-ipsharedFolder);

它也工作,但我想让我的应用程序在mac/linux上工作,所以我试图使用JCIFS为此目的。但我有问题,而认证我应该使用什么作为用户名和密码时,来宾帐户也不在图片。I tried

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();
        }
    }
}

但这也给出错误"帐户已禁用",我猜它试图使用禁用的guest。

因为当使用简单的\server-ipsharedFolder连接到windows时,它是有效的,我认为会有一种方法来做到这一点。我想弄清楚当我们这样做的时候,窗口是如何认证的??

编辑:找到方法了。不需要将您添加到允许登录的用户列表中。如果您在Everyone List中,并且文件夹与Everyone共享,则需要在NTLM认证期间提供您的用户名和密码,然后可以访问与每个人共享的文件夹

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

不需要修改代码。这更像是一个概念。

实际上,当您与所有人共享您的文件时,它实际上与您的DOMAIN或guest帐户上的所有人共享。

当有人试图访问它时,您需要某种方法来验证。当你像这样访问它server-ipsharedFolder使用windows它验证自己使用您的登录用户,如果你是同一域的一部分,它给你访问。

当你使用linux/mac通过JCIFS连接时,你需要做同样的事情。你需要提供你的用户名和密码,如果你的用户是该域名的一部分,你将被认证,你可以访问公开共享或与所有人共享的内容

最新更新