jCIFS Authentifizierungsprobleme an Hitachi NAS System

schicks

Grünschnabel
Hallo,

ich nutze für ein Projekt die jCIFS Bibliothek von Samba. Ich kann mich bereits an jeder Windowsfreigabe authentifizieren. Nun ist es aber erforderlich, dass meine Software sich auch an einer Freigabe auf einem Hitachi NAS System authentifizieren kann. Die NAS befindet sich nicht in der Domain und verfügt über eingeschränkte IP-Zugriffe. Der Entwicklungscomputer ist jedoch freigeschaltet. Der Benutzer für die Authentifizierung ist ein lokaler Benutzer auf der NAS.

Mein Problem besteht darin, dass ich in Java immer den Fehler "SmbAuthException: Logon failure: unknown user or bad password" bekomme. Wenn mich mit dem Windows Explorer auf dem Entwicklungsrechner mit der Freigabe verbinde, dann funktioniert dies ohne Problem. Es kann also prinzipiell nicht, und ich wiederhole NICHT, an dem Benutzernamen und dem Password liegen.

Hier der Beispielhafte Code:

String username = "user";
String password = "userpw";
NtlmPasswordAuthentication authentication = new NtlmPasswordAuthentication("", username, password);
String path = "smb://10.0.0.1/dir/";
SmbFile dir = new SmbFile(path,authentication);



Ich habe schon jede Konstellation des Benutzernames (Rechner\Benutzername, Benutzername@Rechner) und auch das Angeben aller Logininformationen im Pfad versucht.
Ich habe auch schon den Transfer mit WhireShark mit geloggt. Dies ergab, dass der Server noch vor der Übermittlung von Benutzername und Passwort die Login Prozedur beendet hat. Der SMB-Handshake zwischen Server und Client wurde aber komplett durchgeführt.

Eine ewige Suche im Internet hat nichts gebracht und ich bin mit meinem Latein am Ende. Wäre schön, wenn jemand von euch eine Lösung hätte.

Gruß
Sebastian
 
Hallo,

schau mal hier:
http://lists.samba.org/archive/jcifs/2004-December/004426.html

Hast du für deine Fehlerdiagnose auch alle Ports berücksichtigt?
http://jcifs.samba.org/src/docs/capture.html

Musst du bei deinem JCfis eventuell noch das encoding anpassen?

Ansonsten würde ich mal das loglevel von JCifs erhöhen und versuchen die Fehlerursache noch genauer einzugrenzen:
http://jcifs.samba.org/src/docs/api/overview-summary.html#scp

Versuch doch mal noch für den Spaß am JCfis Client das System Property jcifs.netbios.hostname auf deinen Rechnernamen zu setzen...

Gruß Tom
 
Danke für die schnelle Antwort.
Ich habe jetzt mal das Loglevel verändert und bekomme folgenden Fehler:

java.net.UnknownHostException
at jcifs.UniAddress.getAllByName(UniAddress.java:255)
at jcifs.UniAddress.getByName(UniAddress.java:245)
at jcifs.smb.Dfs.getTrustedDomains(Dfs.java:62)
at jcifs.smb.Dfs.resolve(Dfs.java:167)
at jcifs.smb.SmbFile.doConnect(SmbFile.java:897)
at jcifs.smb.SmbFile.connect(SmbFile.java:949)
at test.TestMain.main(TestMain.java:449)
doConnect: NAS.domain.loc/10.0.0.1
SmbComNegotiate[command=SMB_COM_NEGOTIATE,received=false,errorCode=0,flags=0x0018,flags2=0xC803,signSeq=0,tid=0,pid=13776,uid=0,mid=1,wordCount=0,byteCount=12,wordCount=0,dialects=NT LM 0.12]
00000: FF 53 4D 42 72 00 00 00 00 18 03 C8 00 00 00 00 |ÿSMBr......È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 00 00 01 00 |..........Ð5....|
00020: 00 0C 00 02 4E 54 20 4C 4D 20 30 2E 31 32 00 |....NT LM 0.12. |

New data read: Transport1[NAS.domain.loc/10.0.0.1:445]
00000: FF 53 4D 42 72 00 00 00 00 88 01 C8 00 00 00 00 |ÿSMBr......È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 00 00 01 00 |..........Ð5....|

byteCount=58 but readBytesWireFormat returned 0
SmbComNegotiateResponse[command=SMB_COM_NEGOTIATE,received=false,errorCode=0,flags=0x0088,flags2=0xC801,signSeq=0,tid=0,pid=13776,uid=0,mid=1,wordCount=17,byteCount=58,wordCount=17,dialectIndex=0,securityMode=0x3,security=user,encryptedPasswords=true,maxMpxCount=50,maxNumberVcs=1,maxBufferSize=16644,maxRawSize=65536,sessionKey=0x00002510,capabilities=0x8080E3FD,serverTime=Thu Jan 13 12:58:39 CET 2011,serverTimeZone=65476,encryptionKeyLength=58,byteCount=58,oemDomainName=]
00000: FF 53 4D 42 72 00 00 00 00 88 01 C8 00 00 00 00 |ÿSMBr......È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 00 00 01 00 |..........Ð5....|
00020: 11 00 00 03 32 00 01 00 04 41 00 00 00 00 01 |....2....A..... |

treeConnect: unc=\\NAS.domain.loc\dir,service=********?
sessionSetup: accountName=user,primaryDomain=
NtlmContext[auth=user,ntlmsspFlags=0x20080004,workstation=JCIFS199_53_12,isEstablished=false,state=1,serverChallenge=null,signingKey=null]
Type1Message[suppliedDomain=,suppliedWorkstation=JCIFS199_53_12,flags=0x20080205]
00000: 4E 54 4C 4D 53 53 50 00 01 00 00 00 05 22 08 20 |NTLMSSP......". |
00010: 00 00 00 00 00 00 00 00 0E 00 0E 00 20 00 00 00 |............ ...|
00020: 4A 43 49 46 53 31 39 39 5F 35 33 5F 31 32 |JCIFS199_53_12 |

SmbComSessionSetupAndX[command=SMB_COM_SESSION_SETUP_ANDX,received=false,errorCode=0,flags=0x0018,flags2=0xC803,signSeq=0,tid=0,pid=13776,uid=0,mid=2,wordCount=12,byteCount=79,andxCommand=0xFF,andxOffset=0,snd_buf_size=16644,maxMpxCount=10,VC_NUMBER=1,sessionKey=0,lmHash.length=0,ntHash.length=0,capabilities=-2147483564,accountName=null,primaryDomain=null,NATIVE_OS=Windows 7,NATIVE_LANMAN=jCIFS]
00000: FF 53 4D 42 73 00 00 00 00 18 03 C8 00 00 00 00 |ÿSMBs......È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 00 00 02 00 |..........Ð5....|
00020: 0C FF 00 DE DE 04 41 0A 00 01 00 00 00 00 00 2E |.ÿ.ÞÞ.A.........|
00030: 00 00 00 00 00 54 00 00 80 4F 00 4E 54 4C 4D 53 |.....T...O.NTLMS|
00040: 53 50 00 01 00 00 00 05 22 08 20 00 00 00 00 00 |SP......". .....|
00050: 00 00 00 0E 00 0E 00 20 00 00 00 4A 43 49 46 53 |....... ...JCIFS|
00060: 31 39 39 5F 35 33 5F 31 32 00 57 00 69 00 6E 00 |199_53_12.W.i.n.|
00070: 64 00 6F 00 77 00 73 00 20 00 37 00 00 00 6A 00 |d.o.w.s. .7...j.|
00080: 43 00 49 00 46 00 53 00 00 00 |C.I.F.S... |

New data read: Transport1[NAS.domain.loc/10.0.0.1:445]
00000: FF 53 4D 42 73 6D 00 00 C0 88 01 C8 00 00 00 00 |ÿSMBsm..À..È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 64 00 02 00 |..........Ð5d...|

SmbComSessionSetupAndXResponse[command=SMB_COM_SESSION_SETUP_ANDX,received=false,errorCode=Logon failure: unknown user name or bad password.,flags=0x0088,flags2=0xC801,signSeq=0,tid=0,pid=13776,uid=100,mid=2,wordCount=0,byteCount=0,andxCommand=0xFF,andxOffset=0,isLoggedInAsGuest=false,nativeOs=,nativeLanMan=,primaryDomain=]
00000: FF 53 4D 42 73 6D 00 00 C0 88 01 C8 00 00 00 00 |ÿSMBsm..À..È....|
00010: 00 00 00 00 00 00 00 00 00 00 D0 35 64 00 02 00 |..........Ð5d...|
00020: 00 00 00 |... |


Ich muss zugeben, dass ich daraus nicht schlau werde. Die Namensauflösung z.B. mit ping klappt ohne Probleme. Auch ein Eintrag in der hosts-Datei hat nichts gebracht.
 
Fehler gefunden! Die SAMBA-Implementierung auf der NAS konnte nicht mit ExtendedSecurity umgehen.
Ein
Code:
jcifs.Config.setProperty("jcifs.smb.client.useExtendedSecurity","false");
hat das Problem gelöst.
 
Zurück