我正在开发一个需要使用SMB访问网络共享的应用程序。有人告诉我,如果安全部门检测到使用NTLM v.1的身份验证尝试,那么相应的防火墙规则将被撤销。
因此,我需要确保SMBJ(我可能会使用它(支持NTLM v.2,并在默认情况下使用它。
SMBJ支持NTLM v.2吗?它默认使用它吗?
我自己试图找出
在SMBJ的源代码中,我发现了以下片段:
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主页声称SMBJ是一个后续项目:
幸运的是,有多个新的开源SMB Java项目可以尝试,包括以下项目:
jcifs代码库jcifs ngsmbj
根据其常见问题解答,JCIFS自1.3.0版本以来一直使用NTLM v.2。
如果
- JCIFS支持NTLM v.2,并在默认情况下使用它
- SMBJ基于JCIFS
则SMBJ应支持NTLM v.2,并在默认情况下使用它。
是的,SMBJ使用NTLMv2或SPNEGO进行身份验证。您可以配置要使用的。它不使用NTLMv1。