您的位置:首页 > 编程语言 > Java开发

Java Web 项目SSO实战二之(win7 and Windows server 2008)

2014-03-17 23:13 288 查看

JCIFS 的问题

Java Web 项目SSO实战

在上一篇中, 介绍了使用 jcifs 来进行域验证。

但是在Win7 或是windows server 2008 下, 验证却不成功, 会出现 :

jcifs.smb.SmbException: The parameter is incorrect.

类似的错误。

究其原因是因为:

JCIFS的HttpFilter并不支持NTLM2协议,而当客户端是WIN7系统时,默认采用的是NTLM2协议。如果此时域控服务器也支持NTLM2,则会默认采用NTLM2协议验证。就会出现异常了。

官方给出的解释也是不支持NTLM2,

可以参考官方解释: http://jcifs.samba.org/src/docs/ntlmhttpauth.html



The HTTP "filter" in particular uses a "man in the middle" technique that cannot support NTLMv2. Since late 2008, users have started to report that client security policy is requiring NTLMv2 and that this solution no longer works. For this reason and others described in this post, this feature will be removed from the JCIFS package.Currently we recommend using Jespa which properly implements NLTMv2 server side authentication and includes an advanced NTLMv2 HTTP SSO Servlet Filter.

以上就是说, JCIFS 不支持NTMLv2, HTTP filter 的功能之后也不再使用了, 官方推荐使用 Jespa.

所以使用JCIFS只能作为一种临时解决方案, 并不能作为最终方案。

JCIFS 的解决方法

如果已经使用JCIFS 作为解决方案, 只需要暂时解决Win7 等系统的问题的话。如何临时解决以上问题。

解决方法是增加或修改注册表的以下信息:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa中新建一个dword值LMCompatibilityLevel,值为0,即可解决.

修改这个值是什么意思

.reg 文件

以上方式也可以通过执行注册表文件来快速修改

文件名任意, 后缀名是 .reg 就可以了, 比如 ssontlm.reg

Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa]
"LMCompatibilityLevel"=dword:00000001

reg 注册表文件转换为 EXE 可执行文件

可以使用Win RAR 菜单的 “添加到压缩文件...”
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐