Java NTLM窗口身份验证

Java NTLM窗口身份验证,java,ntlm,Java,Ntlm,我使用Samba实现窗口身份验证。在我的web.xml上,我把这个 <filter> <filter-name>NtlmHttpFilter</filter-name> <filter-class>jcifs.http.NtlmHttpFilter</filter-class> <init-param> <param-name>jcifs.http.domainController</param-

我使用Samba实现窗口身份验证。在我的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>

NtlmHttpFilter
jcifs.http.NtlmHttpFilter
jcifs.http.domainController
192.168.1.101
jcifs.smb.client.domain
纽约市用户
jcifs.smb.client.username
某个人
jcifs.smb.client.password
AreallyLooong随机密码
NtlmHttpFilter
/管理员/*
一旦我在管理文件夹中运行页面,窗口登录框就会弹出。我应该输入什么用户名和密码,因为我目前正在管理员帐户下运行。我不太明白,有人能解释给我听吗

<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>

jcifs.smb.client.username
某个人
jcifs.smb.client.password
AreallyLooong随机密码

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

因为您是以本地管理员身份登录的,ie不会为jcifs传输所需的标题。因此,它失败了,您需要使用有效用户登录域

通常,它应该与您的用户/pw组合工作。如果不尝试用户名:域\用户名(请确保使用反斜杠)


必须在jcifs中定义的domaincontroller上设置用户名。http。domaincontroller

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

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

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

这是一个开源库,它还支持集成的windows身份验证/sso

该库的项目页面有一些示例和安装说明