NTLM Windows身份验证

时间:2009-07-15 11:41:17

标签: java ntlm

我使用Samba实现Window AU身份验证。在我的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>192.168.1.101</param-value>
</init-param>

<!--
    always needed for preauthentication / SMB signatures
-->
<init-param>
    <param-name>jcifs.smb.client.domain</param-name>
    <param-value>NYC-USERS</param-value>
</init-param>
<init-param>
    <param-name>jcifs.smb.client.username</param-name>
    <param-value>somenycuser</param-value>
</init-param>
<init-param>
    <param-name>jcifs.smb.client.password</param-name>
    <param-value>AReallyLoooongRandomPassword</param-value>
</init-param>
</filter>

<filter-mapping>
    <filter-name>NtlmHttpFilter</filter-name>
    <url-pattern>/admin/*</url-pattern>
</filter-mapping>

一旦我在admin文件夹中运行该页面,就会弹出窗口登录框。我应该输入什么用户名和密码,因为我当前在管理员帐户下运行。我真的不明白,任何人都可以向我解释一下吗?

<init-param>
    <param-name>jcifs.smb.client.username</param-name>
    <param-value>somenycuser</param-value>
</init-param>
<init-param>
    <param-name>jcifs.smb.client.password</param-name>
    <param-value>AReallyLoooongRandomPassword</param-value>
</init-param>

我可以设置用户名和密码吗?

4 个答案:

答案 0 :(得分:1)

由于您以本地管理员身份登录,即不会传输jcifs所需的标头。所以它失败了,您需要使用有效用户登录域。

通常它应该与你的用户/ pw组合。如果没有尝试用户名:域\用户名(请务必在那里使用反斜杠。)

必须在jcifs.http.domainController中定义的域控制器上设置用户名

答案 1 :(得分:1)

使用NTLM身份验证时,使用Windows域进行身份验证, 这在具有MS域控制器的本地Intranet中很有用。 如果您在web.xml中正确配置了域控制器 您将能够使用Windows登录进行网站身份验证 用户名和密码,假设您通过您配置的同一域进入 你的web.xml 您的浏览器可能配置为自动向某些站点进行身份验证, 对于IE,这通常默认发生在本地网络上的站点上(取决于安全设置)。在Firefox中,这不会自动发生,您需要为每个站点启用它 使用about:config“network.automatic-ntlm-auth.trusted-uris”设置。

重要的是要注意NTLM身份验证很简单被认为是不安全的, 通过向不受信任的服务器进行身份验证,所述服务器很容易从您发送给它的身份验证信息中恢复密码。

答案 2 :(得分:1)

这是一个开源库http://spnego.sourceforge.net,它还支持集成的Windows身份验证/ sso。

图书馆的项目页面有一些示例和安装说明。

答案 3 :(得分:0)

NTLM明确区分用户和域\用户,因此请确保在auth请求中包含域。