2016-10-15 6 views
1

파일 공유에 파일을 쓰는 아주 기본적인 프로그램이 있습니다.jcifs.smb.SmbAuthException : 로그온 실패 : 알 수없는 사용자 이름 또는 잘못된 암호

String sample = "this is a sample content"; 
NtlmPasswordAuthentication auth = new NtlmPasswordAuthentication("domain_one", "username", "password"); 
SmbFile sFile = new SmbFile("smb://network.share.on.domain_two/folder/sample.txt", auth); 
SmbFileOutputStream sfos = new SmbFileOutputStream(sFile); 
sfos.write(content.getBytes()); 

인증 예외는 SmbFileOutputStream 시작 줄에서 발생합니다. 자격 증명이 유효하고이 도메인 사용자 (AD 사용자)가 \\ network.share.on.domain_two \ folder \을 네트워크 드라이브로 매핑하여 파일 공유에 액세스 할 수 있는지 확인했으며 대화 형 모드로 자격 증명을 제공했습니다 . 또한, \\ network.share.on.my_laptop \ folder \에이 파일을 성공적으로 쓸 수있는 코드를 테스트했습니다.이 사용자는 또한 \\ network.share.on.domain_one \ folder \ user 또한 승인되었습니다.

서버의 도메인이 사용자의 도메인과 다른 경우 로그인에 실패했는지 여부를 파악하려고합니다. 도메인의 차이가 인증 실패의 이유가 될 수 있습니까? 또한 인증 방법으로 NTLM을 쓸 수없는 파일 공유에서 NTLM을 사용할 수 있습니까? 그렇다면 어떻게하면 코드 수준에서 또는 런타임에 "결정"할 수 있습니까? 문서의 예가 있습니까? 그리고 네트워크 드라이브로 매핑하여 문제가있는 공유에 로그인 할 수 있기 때문에 다음과 같이 제한된 NTLM 설정이 해당 네트워크 공유에 구현 될 수 있습니다 : https://technet.microsoft.com/en-ca/itpro/windows/keep-secure/network-security-restrict-ntlm-ntlm-authentication-in-this-domain

To 요약하면이 문제를 어떻게 해결할 수 있습니까?

업데이트 : Wireshark 덕분에 문제가 무엇인지 파악할 수있었습니다. 서버는 실제로 네트워크 저장소이며 SMB2 프로토콜 만 지원하며 JCIFS 라이브러리는 SMB1 만 지원합니다. 여전히 SMB1에 대한 인증 협상을 시도하지만 실패합니다.

업데이트 2 : 해결책은 "도메인 신뢰 사용"에서 비롯되었습니다. 변경해야 할 정확한 설정을 조사하고 있습니다. 일단 내가 그 설정이 무엇인지 결정하면, 나는 다시보고 할 것이다.

답변

1

도메인간에 트러스트 설정이 없음이 밝혀졌습니다. 도메인 트러스트가 설정되면 인증이 작동합니다.

+0

무엇을 의미합니까? 아직 다른 설정이 있습니까? 이게 뭐야? –

+0

@ daniel-azamar 예, 우리 도메인에서 액세스하고있는 도메인 어딘가에 구성이 있습니다. 불행히도이 솔루션은 도메인 신뢰가 활성화되어 있어야한다는 것 외에는 나에게 잘 설명되지 않았습니다. 다른 개발자가 솔루션이 무엇인지 물어 봤고 ive는 해결 방법을 파헤 치기 시작했습니다. 일단 도움이되는 세부 사항을 발견하면 나는 다시 게시 할 것이다. – VilleLipponen

+0

감사합니다 !!! 나는 그 악몽으로 끝냈다. –

관련 문제