问题描述
我正在开发一个需要使用SMB访问网络共享的应用程序。有人告诉我,如果安全性使用NTLM v。1检测到身份验证尝试,则将撤消各自的防火墙规则。
因此,我需要确保SMBJ(我可能为此使用)支持NTLM v。2并默认使用它。
我自己的尝试来找出
在SMBJ的source code中,我发现了以下片段:
byte[] serverChallenge = challenge.getServerChallenge();
byte[] responseKeyNT = ntlmFunctions.NTOWFv2(String.valueOf(context.getpassword()),context.getUsername(),context.getDomain());
byte[] ntlmv2ClientChallenge = ntlmFunctions.(challenge.getTargetInfo());
byte[] ntlmv2Response = ntlmFunctions.getNTLMv2Response(responseKeyNT,serverChallenge,ntlmv2ClientChallenge);
名称getNTLMv2ClientChallenge
和getNTLMv2Response
暗示可以使用NTLM v。2。
此外,JCIFS主页claims表示SMBJ是后续项目:
幸运的是,有多个新的开源SMB Java项目尝试包括以下内容:
jcifs-codelibs jcifs-ng smbj
根据其FAQ,JCIFS从版本1.3.0开始一直使用NTLM v。2。
如果
解决方法
是的,SMBJ使用NTLMv2或SPNEGO进行身份验证。您可以配置要使用的那个。它不使用NTLMv1。