参考:
2. https://liaosy.iteye.com/blog/1887092
3.其他库 https://github.com/Waffle/waffle
4. https://blog.csdn.net/iteye_18086/article/details/82072793
5. https://answer-id.com/52373554
6.https://sourceforge.net/projects/ntlmv2auth/
实战开始
1.根据参考1中的jar包,下载后放入lib,
a. 加入buildpath
b 加入 deployment assembly
2. web.xml 中加入:
<filter> <filter-name>NtlmHttpFilter</filter-name> <filter-class>jcifs.http.NtlmHttpFilter</filter-class> <init-param> <param-name>jcifs.http.domainController</param-name> <param-value>10.122.74.146</param-value> </init-param> <init-param> <param-name>jcifs.smb.client.domain</param-name> <param-value>csvw.com</param-value> </init-param> <init-param> <param-name>jcifs.smb.lmCompatibility</param-name> <param-value>0</param-value> </init-param> <init-param> <param-name>jcifs.smb.client.useExtenededSecurity</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>jcifs.smb.client.soTimeout</param-name> <param-value>35000</param-value> </init-param> </filter> <filter-mapping> <filter-name>NtlmHttpFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
3 如果你的开发机不是win7 请跳过这一步。因为我的虚机是win7 ,因此需要改下。
JCIFS的HttpFilter并不支持NTLM2协议,而当客户端是WIN7系统时,默认采用的是NTLM2协议。
如果已经使用JCIFS 作为解决方案, 只需要暂时解决Win7 等系统的问题的话。如何临时解决以上问题。
解决方法是增加或修改注册表的以下信息:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa中新建一个dword值LMCompatibilityLevel,值为0,即可解决.
参考: https://blog.csdn.net/oscar999/article/details/21372227?locationNum=8
.
改这个地方和用下面的方式改是一样的,更直观
在win7机器上运行gpedit.msc,打开组策略,将“计算机配置->windows设置->安全设置->本地策略->安全选项”中的“网络安全:LAN Manager身份验证级别”改为“发送 LM & NTLM 响应”或者“发送 LM & NTLM - 如果已协商,使用 NTLMv2 会话安全”就可以了;如果是home版vista,不能运行gpedit.msc,也可以修改注册表:HKLMSYSTEMCurrentControlSetControlLsa的键值lmcompatibilitylevel为0或者1就可以了。
4.运行起来看看,跳出来了(因为我测试机不是域登陆,所以会跳出来,如果你是域登陆的机器,应该就不会跳出来了,会直接进去):
5. 在登陆页面的方法里加上代码,打印出来了,成功!