Java开发网 Java开发网
注册 | 登录 | 帮助 | 搜索 | 排行榜 | 发帖统计  

您没有登录

» Java开发网 » Java Security » 精华区  

按打印兼容模式打印这个话题 打印话题    把这个话题寄给朋友 寄给朋友    该主题的所有更新都将Email到你的邮箱 订阅主题
flat modethreaded modego to previous topicgo to next topicgo to back
作者 在Form 6i中,应用PJC技术时,解决证书分发的新思路(原创)
feiggle





发贴: 70
积分: 20
于 2003-12-19 15:27 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
前一段,遇到了在Form 6i中应用PJC技术证书的分发问题,试验了那个经典例子,getclientinfo,觉得它的证书分发的问题始终是一个缺陷,如果每台客户机我都安装一下,能叫b/s吗?呵呵!这一段研究了一下,发现有解决的办法,很爽,类似与Java中的数字签名技术,可以解决这个问题,特总结一下,希望对大家有用!

运行的时候会弹出如下窗口:


如果授权本次,则本次会话有权限,如果总是授权,则将自动安装证书

在最新的Forms Server 6i 的发布版本中,Forms Server 6i 的开发可以通过PJC(Pluggable Java Components)技术将JavaBean集成进来,通过PJC接口,可以将JavaBean集成到Form builder中,可以修改Developer 6i默认的标准的UI组件或者可以完全替换原来的UI组件。

PJC技术的简单介绍

首先,先简单介绍一下PJC技术,对于Forms Server的构架我们应先有一个大致的了解,Forms Server可以做Web应用主要是基于应用服务器与基于Java的客户端的构架,应用服务器执行商业逻辑,而Java客户端可以提供用户界面与交互,客户端采用了缓存、压缩与智能消息等技术,使得终端与服务端的通讯更加流畅。
PJC技术要求我们实现oracel.forms.ui.Iview接口,该接口描述了Handler 操作View 的所有的方法,包括生命周期,属性设置,事件处理和显示等方法,列举如下:
Public void init (Ihandler handler);
Public void destroy();
Public Object getProperty(PropertyID id);
Public Boolean setProperty(PropertyID id,Object value);
Public void addListener(Class type,EventListener listener);
Public void removeListener(Class type,EventListener listener);
Public void paint(Graphics g);
Public void repaint(Rectangle r)
如果我们要自己编写在Form builder中用的JavaBean,那么该JavaBean就必须实现该接口,对PJC的编写,如果直接实现该接口,编写起来不方便,建议采用Jdeveloper中的PJC wizard。

对PJC的介绍不是很深,只是大致介绍,其中有很多细节,要具体了解,可以以后介绍,其实PJC就是JAVA 类。

数字签名简单介绍

我们重点介绍在Form builder中如何应用pjc技术,这里需要介绍的是数字签名技术。在Oracle 9i Forms中,经常要用的签名的Jar文件,因为它可以使应用运行在Java applet之外的沙箱中,这种沙箱机制是java 作为一个applet(通常在浏览器中)运行的内在安全机制。它保证了代码对客户机访问的权限,如对客户机的文件的读取,打印机的访问等,这种安全机制是对所有的applet都适用的。Form applet 和PJC若都在客户机做applet运行,也会受到这种安全限制,这样我们就需要一种特权,这就用到了数字签名技术。

如果我们用的是Forms 6i,但是我们的forms 6i和Jinitiator 1.3兼容,也可以运用该技术。

数字签名技术的简单介绍

数字签名主要证明两件事情;
1、 代码从哪里来
2、 代码在中间的传输过程中被第三方修改了没有
如果这两个问题回答了,我们就认为我们信任运行的代码,放开权限给applet,applet就可对客户机的文件进行读取,打印机的访问等,证书的发放问题就是一个信任链的确认问题。

数字签名用到很多概念,密钥库,公钥,私钥,对称算法,证书等。对于这些技术可以参见Sun的文档,不需要了解很深,大致写一下对一个jar包数字签名的步骤:
1、 生成密钥库
2、 生成公钥、私钥,可以产生证书(包含我们公司的信息,如名称等)
3、 对我们需要部署的Jar包,用生成的私钥签名

Forms 6i中,PJC的部署问题
  
在Form builder中,如果我们要引用已经写好的PJC,可在数据块中添加Bean,指定该Bean的实现类为已经编写的 PJC,可在该Bean项的WHEN-CUSTOM-ITEM-EVENT trigger中编写代码,如果编写完毕,在服务器端部署的时候,要同时部署fmb文件和PJC组件,对于PJC的JavaBean,我们要将它生成Jar包,部署到Form server端,方便客户端程序下载执行,大致步骤如下:
1、 在Forms builder中引用特定的JavaBean;
2、 编写fmb之后,编译生成fmx
3、 将JavaBean所用的Java Class打包,生成Jar文件
4、 对生成的Jar文件,用我们自己的私钥进行签名
5、 由于目前版本的Jinitiator 1.3,在对经过多个不同的私钥签名的Jar文件进行认证时会出现错误,所以,将所有用到的Jar包,都用我们自己的私钥进行签名
6、 在Forms Server 端,部署fmx 文件和Jar包
7、 修改Forms Server 端的formsweb.cfg文件,指定客户端要下载的Jar包

经过上述几步,就可以部署成功我们自己签名授权的Forms Server,在这几个步骤中,可能会有一些技术细节需要研究,部署成功的前提是我们的Forms Server端要道Patch 14补丁包,即将Jinitiator升级到1。3之上。

一个例子
当所有的文件和数字签名的Jar包在Forms Server端部署的时候,这里有getClientInfo的一个例子,大致如下:
1、 将客户端用到的Jar文件(已经经过数字签命的Jar文件),放到
ORACLE_HOME\FORMS60\java\ 目录下,该例子有两个Jar包,f60all_signed.jar 和getclientinfo_signed.jar
2、 将getclientinfo.fmx拷到ORACLE_HOME \FORMS60\目录下
3、 修改formsweb.cfg文件,如下
。。。
archive_jini=f60all_signed.jar,getclientinfo_signed.jar
archive_ie=f60all.cab
connectMode=Socket

对于在Forms 6i中应用PJC技术,上述只是写了一些可能会考虑的方面和应该掌握的技术细节,大致列了一下步骤,可能针对不同的具体应用,在具体实现的过程中,要做不同的配置工作。

需要掌握的技术
1,java
2,java security,主要是数字签名
3,forms builder,pl_sql

希望对大家有用!

(缩略图,点击图片链接看原图)



作者 Re:在Form 6i中,应用PJC技术时,解决证书分发的新思路(原创) [Re:feiggle]
menzy



版主


发贴: 754
积分: 113
于 2003-12-26 09:03 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
队原创的东西总是鼓励的。
能不能提供一些Form 6i的东西?



作者 Re:在Form 6i中,应用PJC技术时,解决证书分发的新思路(原创) [Re:feiggle]
feiggle





发贴: 70
积分: 20
于 2004-01-14 15:50 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
我也是最近才转向对oracle的研究的
公司用java在作产品时,遇到两个问题,最突出的两个问题:
1)开发效率低;
2)开发出来的产品效率低;
而作erp的,最重要的就是业务模型,就是快速开发,公司有多个项目组,有oracle的,我就客串一下
forms 6i是oracle提供的一套快速开发web应用的一套工具,有report等
6i对java的支持不太好,在oracle 9i中,有很大的改善,是oracle erp的开发工具,我对她的了解也在慢慢的学习中
推荐一个论坛:
www.oracle-dev.com



作者 Re:在Form 6i中,应用PJC技术时,解决证书分发的新思路(原创) [Re:feiggle]
menzy



版主


发贴: 754
积分: 113
于 2004-01-15 08:28 user profilesend a private message to usersearch all posts byselect and copy to clipboard. 
ie only, sorry for netscape users:-)add this post to my favorite list
那我也推荐一个
http://www.oracle-base.com/Index.php
我们多半时间拿Oracle做数据库用,前端工具现在有用Brio之类的作开发




flat modethreaded modego to previous topicgo to next topicgo to back
  已读帖子
  新的帖子
  被删除的帖子
Jump to the top of page

   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923