у нас есть сценарий, в котором мы делимся папкой с группой «Все» (которая, я думаю, включает всех пользователей из вашего домена)
когда мы используем \\server-ip\sharedFolder в Win + R, мы можем подключиться к папке и просматривать без пароля (мой компьютер вошел в систему, используя пользователя в том же домене)
когда я кодирую его в java-приложении, используя класс File, подобный этому
Файл f = новый файл (\\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();
}
}
}
но это также дает ошибку «Учетная запись отключена». Я предполагаю, что она пытается использовать гостя, который отключен.
так как при соединении с windows с помощью простого \\server-ip\sharedFolder это работает, я думаю будет способ сделать это. Я хочу выяснить, как Windows аутентифицируется, когда мы это делаем ???
РЕДАКТИРОВАТЬ: Нашел способ сделать это. Вам не нужно добавляться в список пользователей, которым разрешен вход в систему. Если вы находитесь в списке «Все» и папка доступна для всех, вам необходимо указать свое имя пользователя и пароль во время проверки подлинности NTLM, и после этого можно будет получить доступ к папкам, к которым предоставлен общий доступ для всех.