Windows 2k8中的JCIFS / Lan-Managervalidation级别设置中的getUserPrincipal()

我必须找出确切的格式JCIFS将用户主体存储在“getUserPrincipal()”属性中。 为此,我创build了一个像这样的testing环境:

  • Windows Server 2008域控制器
  • 名为“MYDOMAIN”的网域
  • Active Directory中的许多Testuser
  • Tomcat应用程序服务器与我的Web应用程序(只读取用户主体并显示其值)。

用户应该使用SSOlogin到Web应用程序,因此我需要jcifs用来存储用户的格式。 (例如user @ MYDOMAIN或MYDOMAIN \ user …)

我使用Kerberos方法testing了其他SSO框架的身份validation,并按预期工作。

我现在试图通过JCIFS的NTLMHttpFilter使用SSO。 当我尝试login时我收到以下错误信息:

jcifs.smb.SmbException: The parameter is incorrect. jcifs.smb.SmbTransport.checkStatus(SmbTransport.java:541) jcifs.smb.SmbTransport.send(SmbTransport.java:641) jcifs.smb.SmbSession.sessionSetup(SmbSession.java:322) jcifs.smb.SmbSession.send(SmbSession.java:224) jcifs.smb.SmbTree.treeConnect(SmbTree.java:176) jcifs.smb.SmbSession.logon(SmbSession.java:153) jcifs.smb.SmbSession.logon(SmbSession.java:146) jcifs.http.NtlmHttpFilter.negotiate(NtlmHttpFilter.java:189) jcifs.http.NtlmHttpFilter.doFilter(NtlmHttpFilter.java:121) 

关于我用来configuration这个的文档,这是组策略的一个已知问题。 据说在那里,我必须改变组策略“Networkaccess:lan-manager authentication level”以响应NTLMv1请求。

我已经这样做了,但还是不行。 所以我也必须configuration客户端计算机上的相同策略。 我必须更改策略,以便客户端计算机发送NTLMv1。 但是它总是发送NTLMv2令牌。

现在的问题是,我不知道怎么改变这个设置。 (我已经在之前),因为下拉框select身份validation方法是“灰色”。

客户端的Lan管理器身份验证级别

编辑:只是为了清楚,这个对话框在客户端在“本地安全策略”

正如你可以从这个截图看到的,select的方法是“只发送NTLMv2响应”这是错误的设置,我敢肯定,这是造成上述错误。

我的问题是现在,为什么我不能改变这个设置? 为什么会出现?

这是因为您有一个pipe理此function的组安全策略,所以您不能在本地修改它。 运行gpmc.msc而不是gpedit.msc,如果你是Administrator,你应该可以修改它。