当前位置:首页 > JCIFS使用NTLM HTTP认证
设置此属性,以使真正的纯HTTP基本验证了。 这种配置在网络中
jcifs.http.insecureBasic
传递明文用户凭据。 它不应该被用在环境中的安全是必需的。 如果jcifs.smb.client.domain属性被指定(及加入
DomainController 不指定)NtlmHttpFilter将名称
查询由域控制器。 如果此属性为 true过滤器将通过旋转控制器列表
jcifs.http.loadBalance
用户进行身份验证时的域。 默认值是 true。 该
jcifs.netbios.lookupRespLimit属性也可用于限制使
用的数字控制器的域。
该0x1C进行NetBIOS名称查询返回的域控制器列表。 据信,在此列
jcifs.netbios.lookupRespLimit
表的顶部的服务器应该受到青睐。 此属性限制按名称查询返回的服务器范围。 默认值是5的意思前5个域控制器将被使用。
的WINS服务器的IP地址。 这是访问时需要在不同子网上的主机(如
jcifs.netbios.wins
按名称域控制器),这是强烈建议如果WINS服务器可用。 本地接口的IP地址绑定到客户端应该如果它不同于默认。 例如,如果jCIFS用于验证在一个接口以及这些客户的客户是唯一的域控制器的另
jcifs.smb.client.laddr
一个Web服务器有两个网卡接口访问它可能需要指定应该使用哪个接口jCIFS。
本地接口的IP地址的客户端应为名称查询绑定到如果它不同于默认。
jcifs.netbios.laddr
可能设置为与上述性质相同。
文件属性的是缓存attrExpirationPeriod毫秒。 默认是
5000,但NetworkExplorer servlet将尝试将此属性设置为
jcifs.smb.client.attrExpirationPeriod 120000 。 否则,当上市的大型目录,属性的SmbFiles内到期的
可降解性能的默认和严重的时期产生了大量额外的网络信息。 为了防止不必要的客户端服务器资源控股,插座被关闭后,这段时间内如果没有任何活动。 这一次,被指定以毫秒为单位。 但是默认是15000
jcifs.smb.client.soTimeout
当NTLM HTTP认证使用,NtlmHttpFilter将尝试将此值设置为5分钟,使()经常呼吁SmbSession.logon不要惹冗余消息被提交到域控制器。 如果它是不可取的密码哈希缓存设置此值回
15000。
当一个NetBIOS名称与NbtAddress类是解决缓存以减少重复名称查询。 此属性控制多久,在几秒钟内,这些名称缓存。 默认为30秒,0
jcifs.netbios.cachePolicy
是没有缓存,-1是永恒的。 当NTLM HTTP认证使用,
NtlmHttpFilter将尝试将此值设置为20分钟,使该域控制器为
频繁的查询将被缓存。
必须重新启动集装箱
如果您更改任何jcifs属性或更换一个不同的现有jcifs jar文件,容器必须重新启动。 这是因为大多数jcifs属性检索类只有一次,当第一次加载。
Tomcat的
Tomcat的过滤指令要求所有彼此相邻,所有过滤器映射指令出现彼此相邻,所有servlet指令... 等等。 这是因为Tomcat对验证的DTD的web.xml部署描述符。
MalformedURLException:未知协议:中小企业
如果你得到下面的异常尝试升级到jcifs - 0.7.0b12或更高版本。 另请阅读常见问题 。
例外MalformedURLException:未知协议:中小企业 在中java.net.URL(URL.java:480)。 在中java.net.URL(URL.java:376)。 在中java.net.URL(URL.java:330)。 在jcifs.smb.SmbFile(SmbFile.java:355)。 ...
透明的认证和网络密码对话框
如果过滤器正常工作的网络密码对话框应该永远不会出现。 但是,必须有一个Web浏览器开会商讨透明使用NTLM认证的HTTP authenication几个要求。 如果任何这些要求得不到满足,默认的行为是目前与用户的网络密码对话框。 的要求是:
1. 客户端必须登录到Windows NT的jcifs.smb.client.domain参数(或参数标识的
jcifs.smb.client.domainController如果用它代替主域)确定域。 客户端可以被记录到域具有与目标域的信任关系。 事实上,这并非罕见配置工作站加入一个从用户的不同领域。 请注意,Windows 95/98/ME系统不能真正加入域,但可以这样做配置足够透明的NTLM身份参加HTTP认证。
2. 只有Internet Explorer将使用NTLM HTTP认证透明的谈判。 Mozilla将总是提示用户输入凭
据(某人请通知我们,当/如果这是不是真的了)。 当时写这本FAQ不知道还有哪些浏览器,如果有的话,可以协商NTLM身份的HTTP authenication透明。
3. 无论是目标URL必须包含本地域中(例如ws1.mycompany.com)或客户端的安全设置的服务器
必须被改变(如工具>“Internet选项”>安全“本地Intranet>网站>”高级>“添加您的网站)。 如果URL中不包含在定义的Intranet区域(如不是一个IP地址)的网址,IE浏览器将假定服务器在Internet区域和目前与用户的网络密码对话框。 这将是一个非常不好,如果互联网上的服务器能够说服IE浏览器发送给您的使用NTLM密码散列。 这些都是很容易与蛮力破解哈希字典攻击。 为了防止这种情况下,IE浏览器试图区分内部网站和互联网网站。 下面是一些重要事项时需要考虑部署一个使用NTLM HTTP认证的网站,无论是否jCIFS是用来做它。
o
Internet Explorer可能会提示您输入密码
http://support.microsoft.com/default.aspx?scid=kb;恩美; Q258063
o
如何使用Internet Explorer安全区域
http://support.microsoft.com/default.aspx?scid=kb;恩美; Q174360
o
Intranet网站被标识为一个互联网网站时,你使用FQDN或IP地址
http://support.microsoft.com/default.aspx?scid=kb;恩美; Q303650
4. 用户的凭据必须是有效的。 例如,如果该帐户已过期,被禁用或锁定网络密码对话框将会出现。
要确定哪些错误有过错,有必要修改NtlmHttpFilter检查中的doFilter SmbAuthException。 5. 该jCIFS客户端必须支持lmCompatibility水平与域控制器的通信需要。 如果服务器不允许
NTLMv1尝试设置jcifs.smb.lmCompatibility = 3。
个人工作站AD安全政策
如果您的Active Directory安全政策要求用户只能从他们的JCIFS到个人工作站将无法登录到域验证和服务器的安全日志将有类似“\\ \\ JCIFS10_40_4A无法授权”的条目。 这是因为域控制器是未能有效解决动态生成的“来电姓名”,由客户端提交的协议协商过程中。 为了解决这个问题,有必要设置
jcifs.netbios.hostname属性为有效的NetBIOS名称都可以)解决NetBIOS名称服务(如WINS
和补充,更名为许可客户端AD安全政策。
例如,您可以使用此属性设置为HTTP的web.xml文件的NTLM一个INIT - paremeter过滤器如下:
HTTP POST和保护小组内容
一旦谈判NTLM身份IE的HTTP验证它会主动重新谈判与服务器相关的所有内容POST请求的NTLM(基于IP的?)。 因此,当使用HTTP POST请求是不可能限制访问服务器上的一些内容,IE浏览器将尝试,不谈判的NTLM(标准的IE错误页?)。 这是协议限制,似乎没有被说服IE浏览器的方式主动停止POST请求一旦谈判已确定该服务器是NTLM身份验证的谈判能力。
中小企业签名和Windows 2003
如果域控制器,你对客户的需要进行身份验证的SMB签名(Windows 2003中默认是通过),建议您提供的init - jcifs.smb.client参数的。{域,用户名,密码}执行“预身份验证”每到一个域位指示运输,使正确的SMB签名的密钥将被生成。 事实上,这可能是正确的操作必需,它已被观察到的NT 4.0不检查认证的要求,但该行为并未在所有环境中证实了签名。 如果过滤工程,第一个身份验证失败,但第二个用户此后不久,这将表明,签约成立认证失败了,但随后由于缺乏关键的一个好签。 另外,没有适当
的签名密钥SMB_COM_LOGOFF_ANDX)若干请求(SMB_COM_TREE_DISCONNECT,将导致签名验证失败(尽管它们是无害的客户端)。
一个签字问题解决方案,第三是改变jcifs.smb.client.ssnLimit为1。 这就要求每一个身份验证使用一种单独的传输。 因为Mac签名密钥仅在SMB通信中使用后发生的初始身份验证,签署将有效地忽略。 然而,这个解决方案将大大减少,因为每个验证可扩展性,开放它自己的交通工具。 对于这是否使用“工作站的帐户”,preauthenticate运输第二个解决方案被认为是优越的方法,并应在默认情况下用于服务器,需要签名的原因。
使用NTLM HTTP认证协议详细
在NTLM HTTP认证过程很好地描述这些文件:
http://davenport.sourceforge.net/ntlm.html http://www.innovation.ch/java/ntlm.html
这一过程可以概括为三请求/响应“握手”。 所以的doGet()会被调用三次。 第一个是最初的请求。 401
未经授权被送回被IE提交一个特殊的信息编码在一个头。 另401未经授权被送回后IE浏览器提
交的密码哈希。 这是jCIFS用武之地的密码哈希仅是无用的。 你必须检查自己的服务器上对密码数据库的真实性地方(其实你可以指定一个普通的工作站或任何其他SMB服务器的IP)。 否则用户谁的工作站不是域将得到一个密码对话框成员到他们可以把任何东西,这将让他们进来,这就是几乎所有的例子,在各种论坛上看到做。 不要被愚弄。
[1]由于被加载到协议的限制,如何处理,如果SMB URL协议处理程序是使用(意思是你要访问资源与SMB中小企业:/ /网
址)在您的应用程序是必要的罐子被jCIFS加载系统类加载器。 这通常可以达到目录中放置在容器中库/。 然而,对于容器(Tomcat)的servlet类加载在子类加载器这也将可能会带来问题jCIFS将无法加载javax.servlet为了得到过滤和URL协议处理程序同时运行,需要一些试验和使用取决于容器的福利。
包.*类。
共分享92篇相关文档