发现使用windows密码验证的方式
http://www.theserverside.com/blogs/showblog.tss?id=ServletApp
但是我照着文章上弄好一个多小时也没有搞定,哪位兄弟搞定了知会一声,谢谢先!以前没有弄过java密码学方面的
问题
点数:20、回复次数:5Top
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都不知道是哪里,所以我根本没有办法试验喽~~~