jcifs-windows密码验证的方式

这篇博客讨论了如何利用jcifs库进行Windows NTLM身份验证,通过配置Tomcat的filter实现HTTP NTLM过滤。博主分享了配置web.xml的详细步骤,并探讨了在有域控制器和无域控制器环境下的不同实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

发现使用windows密码验证的方式

楼主shangqiao(伤桥(千万不要理解为我可怜桥,是“伤心桥下”的缩写)) 2004-11-01 18:29:48 在 Java / 安全专题 提问

http://www.theserverside.com/blogs/showblog.tss?id=ServletApp  
   
  但是我照着文章上弄好一个多小时也没有搞定,哪位兄弟搞定了知会一声,谢谢先!以前没有弄过java密码学方面的 问题 点数:20、回复次数:5Top

src="/Include/Board.htm?Tags=" frameborder="0" scrolling="no">

1 楼abcdhy(程旭)回复于 2004-11-02 00:24:01 得分 5

windows   使用的是   NTLM   验证.  
  这个在网上有一个   JCIFS   项目 ,专门处理   NTLM   验证.  
   
  但我看了一下,还是不会用!  
   
  你去看看,把使用方法共享一下,谢谢!Top

2 楼riverwater(小河流水)回复于 2004-11-02 09:08:33 得分 5

初步尝试了一下,以我目前条件测试成功。现在简略说明一下我的实现步骤。  
  具体官方文档在 下面 链接  
  http://jcifs.samba.org/src/docs/ntlmhttpauth.html  
   
  具体实现是,在自己的web.xml中配置filter,因为手头没有域控制器,所以采用了他共享目录检测权限的方式。即下面这种,其中192.168.2.15为待检测 计算机 的IP,JCIFSACL是待检测目录,在web.xml中添加上如下语句后,重新启动tomcat,然后访问web连接   http://192.168.2.15:8080/testjcifs(testjcifs为我的web别名),即出现登录对话框。再次访问就不会出现了。  
  即:经过 认证 一次以后就不会再次出现该对话框。  
   
   
  <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.2.15</param-value>  
          </init-param>  
          <init-param>  
                  <param-name>jcifs.smb.client.logonShare</param-name>  
                  <param-value>JCIFSACL</param-value>  
          </init-param>  
  </filter>  
   
  <filter-mapping>  
          <filter-name>NtlmHttpFilter</filter-name>  
          <url-pattern>/*</url-pattern>  
  </filter-mapping>  
  Top

3 楼riverwater(小河流水)回复于 2004-11-02 09:17:11 得分 5

哦,接着说:  
  如果我 指定 的局域网的另外一台nt计算机,同样可以实现认证。刚才测试了一下没有问题。  
  多个人访问,也完全可以彼此区分,无论是否使用相同用户名访问。  
  仔细追究原因,找到答案,这个jar文件是通过虚拟一个名为:JCIFS***_&&_%%的用户来访问认证计算机进行认证的。其中***表示当前tomcat计算机的IP的第一位,&&表示最后一位,%%是一个序列数  
  当然,这些是根据实际表征看出来的结果,具体是不是还不得而知。Top

4 楼riverwater(小河流水)回复于 2004-11-02 09:30:18 得分 5

接着尝试使用域的方式,即:  
  <filter>  
          <filter-name>NtlmHttpFilter</filter-name>  
          <filter-class>jcifs.http.NtlmHttpFilter</filter-class>  
   
          <init-param>  
                  <param-name>jcifs.smb.client.domain</param-name>  
                  <param-value>NYC-USERS</param-value>  
          </init-param>  
          <init-param>  
                  <param-name>jcifs.netbios.wins</param-name>  
                  <param-value>10.169.10.77,10.169.10.66</param-value>  
          </init-param>  
  </filter>  
   
  <filter-mapping>  
          <filter-name>NtlmHttpFilter</filter-name>  
          <url-pattern>/*</url-pattern>  
  </filter-mapping>  
   
  结果以失败告终,因为我这里的网络架构比较宽松,没有域控制器,使用工作组代替域的时候,根本没有办法认证,得出UnknownHostException这个错误,这点是可以接受的。所以也不为过。  
  但是可以猜测,jcifs.smb.client.domain应该指的是 域名 ,而jcifs.netbios.wins就应该是相应的Wins服务器了,一般来说这里填写域控制器的IP,我想应该没有问题。  
   
  没有域的wins都不知道是哪里,所以我根本没有办法试验喽~~~ 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值