SMBJ身份验证器支持哪个NTLM版本1或2?

问题描述

我正在开发一个需要使用SMB访问网络共享的应用程序。有人告诉我,如果安全性使用NTLM v。1检测到身份验证尝试,则将撤消各自的防火墙规则。

因此,我需要确保SMBJ(我可能为此使用)支持NTLM v。2并认使用它。

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);

名称getNTLMv2ClientChallengegetNTLMv2Response暗示可以使用NTLM v。2。

此外,JCIFS主页claims表示SMBJ是后续项目:

幸运的是,有多个新的开源SMB Java项目尝试包括以下内容

jcifs-codelibs jcifs-ng smbj

根据其FAQ,JCIFS从版本1.3.0开始一直使用NTLM v。2。

如果

  1. JCIFS支持NTLM v。2,并认使用它,
  2. SMBJ基于JCIFS,

然后SMBJ应该支持NTLM v。2并认使用它。

解决方法

是的,SMBJ使用NTLMv2或SPNEGO进行身份验证。您可以配置要使用的那个。它不使用NTLMv1。