发布时间 : 星期六 文章JCIFS使用NTLM HTTP认证更新完毕开始阅读
JCIFS使用NTLM HTTP认证
一个企业内联网网站上常见的需求是NTLM HTTP认证有时也被称为单点登录(SSO)。 微软IE浏览器的能力,谈判通过HTTP使用Base 64编码NTLMSSP消息会话使用NTLM密码散列。 这是一个Java应用程序的IIS,但也可以使用jCIFS来验证客户端的域控制器MSIE主食服务器功能。 这是一个有用的功能,因为周围的用户管理,现在回落到电脑支持和人力资源的许多任务。 这是没有必要添加和删除用户,因为他们加入和离开公司。 也许最重要的,从用户的角度来看,他们并不需要输入用户名和密码,如果他们的工作站是域的成员。 时产生的密码哈希他们登录到自己的工作站将在通过jCIFS通过了会议,初步要求谈判,并针对PDC或BDC验证。 这也使得用户的网域,用户名和密码管理会话的信息,特征,喜好等使用jCIFS Servlet过滤器是微不足道的HTTP验证的支持NTLM身份加入到您的网站上。 它也可以创建自定义身份验证模块使用NtlmSsp类直接。 这个过滤器尺度非常好,主要是因为会话是在复用传输。 但是,这个功能也不是没有警告。
注:此功能是一个非符合性扩展到HTTP完全由微软设想。 它不适当地使用HTTP标头,因此可能无法在所有servlet容器或服务器可能会停止使用您的应用程序的新版本。 同时,这个密码是加密的味道不是很安全的情况下,不应该如此它是用来验证Internet客户端上。
注意:不要忘记重启参数改变后jCIFS容器初始化。 JCIFS必须使用容器类加载器和jCIFS属性是只读一次当jCIFS类被初始化。
安装和设置
把最新的jCIFS罐子 lib文件在/]你的webapp目录[1。 由于jCIFS属性加载一次,当jCIFS类是首次访问,是要真正停止并重新启动容器如有jCIFS属性已被更改。 下面是两个web.xml中配置。 请注意,
jcifs.smb.client.domain和jcifs.smb.client.domainController属性是互相排斥
的。
生产的web.xml示例
一个简约的映射指令web.xml文件过滤器和过滤器可能类似于以下内容:
该过滤器部分说明了在用户安装程序,验证客户对域纽约市 。 这是适合用户的并发数为jCIFS大循环将通过域控制
器,并使用WINS服务器候补委员必要的。
上述将验证用户访问所有用户的内容针对域纽约市 。 WINS服务器10.169.10.77将被查询来解决纽约市的用户到域控制器的IP地址对。 如果该WINS服务器没有响应,10.169.10.66将被质疑。
备用的web.xml示例
下面的例子节滤波器illistrates如何指定jcifs.http.domainController财产IP地址的域控制器特别使用。 目标计算机并不需要一个真正的域控制器 - 这可能只是一个工作站。 也说明了下面是
jcifs.smb.client.logonShare财产。 这将导致jCIFS试图访问资源\\ \\ 192.168.2.15 \\ JCIFSACL当用户进行身份验证。 通过创建,共享和更改访问控制列表只有特定的用户或用户组可以访
问您的网站。
jcifs.smb.client.logonShare 参数名称>
该过滤器部分说明了并发用户的身份验证设置为JCIFSACL反对份额数测试或小的网站上(如1000)
要么是jcifs.smb.client.domain或jcifs.smb.client.domainController属性是必需的。 这将是合适的身份验证的客户端指定域的成员以及其他领域与它有信任关系。 运行NtlmHttpAuthExample.java例子应该是筛选合适的测试。
使用NTLM HTTP认证范例
纽约市的用户\\ MIALLEN成功登录
请提交某种形式使用POST数据
hello提交查询内容
field1的=你好
测试意义的文章中,经过协商NTLM身份验证的HTTP一次,即不会发表任何形式的数据,直到它再次谈判的密码哈希。 如果NTLM身份验证的HTTP筛选器未启用像下面这样将显示: 空成功登录
请注意,用户被允许访问。 不像这个例子中,开发人员可能会增加一个额外的检查,以确保
getRemoteUser没有返回 null。
非MSIE客户,并且“基本”身份验证
使用NTLM HTTP认证只支持MSIE透明。 Mozilla的1.6支持NTLM HTTP的谈判,但始终提示用户通过默认凭据(虽然在Mozilla的文档集成身份验证描述如何使其透明的,用户信任的网站)。 对于其他客户有可能通过使用基本身份验证使用NTLM密码凭据。 这是非常气馁,如果没有使用SSL的,因为它以纯文本发送这些凭据。 它不会很难另一个用户下载并安装一个程序来“窥探”LAN流量并获得其他用户的密码。
无论如何,这一功能已被添加到NtlmHttpFilter和NtlmServlet(适用于2.3 servlet容器),尽管它是默认禁用。 要启用此功能设置jcifs.http.basicRealm,
jcifs.http.enableBasic,及下表中所述的jcifs.http.insecureBasic性能。
JCIFS属性有意义为NTLM HTTP认证
开头的所有参数'jcifs。' 将被设置为jCIFS属性这意味着任何jCIFS属性可以作为初始化参数。 必须设置这些属性之前jCIFS类使用 。 对于jCIFS属性的完整清单请参考API文档概述页 。 这里是一个jCIFS与HTTP认证的NTLM方面的补充说明属性子集选择。
NT域对哪些客户端进行身份验证。 一般来说,有必要也设置
jcifs.netbios.wins参数或域控制器可能无法找到。 这个参
数将被忽略NTLM身份验证目的的HTTP如果
jcifs.smb.client.domain
jcifs.http.domainController属性被指定(虽然他们可
以一起使用的“preauthenctication”作为描述的SMB签名和Windows 2003部分)。
该NtlmHttpFilter类IP地址的任何SMB服务器,应使用HTTP客户端的身份验证与。 如果这不是指定的
jcifs.smb.client.domain 0x1C进行NetBIOS组名称将
jcifs.http.domainController
被质疑。 如果这些查询失败,将抛出一个
UnknownHostException。 这是没有必要为此指定一个真正
的域控制器。 工作站的IP地址将做简单的目的。
jcifs.http.basicRelm jcifs.http.enableBasic
对于基本身份验证领域。 此属性默认为'jCIFS'。 设置此属性,以使真正的HTTPS仅基本身份验证了。