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

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,即可解决.

修改这个值是什么意思




前言


前言

你可能感兴趣的:(Java Web 项目SSO实战二之(win7 and Windows server 2008))