BBS水木清华站∶精华区

发信人: newzenith (丁丁...我要周游世界), 信区: Java        
标  题: Re: 询问Apple访问本地文件? 
发信站: BBS 水木清华站 (Sun Mar 21 13:37:25 1999) 
 
【 在 Learnerboy (  dingding ) 的大作中提到: 】 
 本人目前用Java开发一个Internet应用,其中涉及到文件下载. 
 众所周知,Applet不能访问客户机本地文件.那么,如何用Java 
 实现用户在浏览器中进行文件下载呢?听说,签名Applet具有 
 本地访问能力,具体原理是什么?另外,还有其它方法吗? 
 望各位网友发表高见. 
 
从JDK1.1开始,就提供了一种对JAR进行签名的机制,可以使经过签名认证的APPLET具有 
与APPLICATION同等的权力(如SOCKET连接、本地文件访问等等)。使用JDK1.1的签名认 
证机制是这样的: 
JDK1.1中提供了一个Javakey程序,这个程序能完成如下功能:1.生成公私密钥对,2.生 
成公钥证书,3.生成对JAR文件的签名。利用这些功能我们就能完成一个签名APPLET的全 
套制作。首先,要生成签名者的一对密钥(如果对公钥体制不了解的可以去看看密码学方 
面的入门知识),然后利用公钥产生一个公钥证书文件,并通过网络(或者其它方式传递 
给需要运行APPLET的主机),由运行APPLET的主机决定是否信任这个签名者(注意,一旦 
信任了这个签名者,以后由这个签名者的私钥签名的APPLET将在这台主机上拥有跟 
APPLICATION一样的权限),接着将需要具备本地访问权限的APPLET的CLASS文件用JAR 
包起来(不要告诉我你不会用JAR哦,很容易用的,基本跟TAR一样),并且用签名者的 
私钥对这个新生成的JAR文件进行签名。最后,不要忘记,在HTML文件的APPLET TAG中加上 
ARCHIVE=***.JAR,否则浏览器将找不到你的APPLET。整个过程就是这么简单,至于具体 
的例子,精华区里有一篇文章说得很清楚。 
 
另外,如果你使用的是JDK1.2的话,使用方式将有点不同。JDK1.2用keytool、jarsigner 
取代了JAVAKEY,但是使用起来更加简单。而且,JDK1.2还引入了一种POLICY机制,使得 
对applet甚至是APPLICATION的安全限制更加灵活。它可以指定APPLET拥有哪种权限,而 
不是让APPLET一下子拥有所有的权限。比如,可以单独授权一个APPLET具有与某个指定的 
IP地址的主机建立SOCKET连接的权限,或者访问本地某个目录下的指定文件的权限。所有 
的POLICY的设置可以通过一个工具POLICYTOOL来完成,非常方便。使用这个工具甚至可以 
让没有经过签名认证的APPLET也获得指定的权限(只要指定APPLET的URL地址就行了)。 
最新版的Java Tutorial中有几个例子,很容易的说。 
-- 
_/_/_/   _/_/_/ 
_/   _/  _/   _/ 
_/    _/ _/    _/ 
_/    _/ _/    _/ 
_/   _/  _/   _/ 
_/_/_/   _/_/_/   外面的世界很精彩... 
 
※ 修改:·newzenith 於 Mar 21 13:39:46 修改本文·[FROM: argo.zsu.edu.cn] 
※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: argo.zsu.edu.cn] 

BBS水木清华站∶精华区