webservice开发技术说明书
更新时间:2024-03-16 09:51:01 阅读量: 综合文库 文档下载
1 前言
在NC环境中发布WS服务以及创建SEI(service endpoint interface)最便捷的方式就是使用NC Eclipse插件的相关功能。使用前需要手动安装NC WebService Eclipse插件:nc.uap.mde.wstools_1.0.0.jar。以下描述的发布过程假设该插件已成功安装且java工程为NC Module Project工程。
2 发布服务
在NC中发布WS服务可简单描述如下: ? 由Java接口创建WSDL文件。
? 如果Java接口中引用了自定义的Java类,需要创建相应的XSD文件。 ? 在模块下的UPM文件中配置WS服务。
? 如果需要WS安全方面的考虑还需要配置ws-security.xml文件,及相关的证书管理
配置。
注意:使用NC的Eclipse插件配置UPM文件的过程中,可以自动创建WSDL文件和XSD文件。这样比单独创建WSDL/XSD文件便捷。
2.1 创建WSDL文件
? 在Eclipse IDE中选中要发布为WS服务的接口文件,点击右键弹出功能菜单。选
择WS Tools下的Genarate WSDL菜单项,如图:
? 选择后弹出WSDL创建面板,设置WSDL文件的保存路径。
? 勾选Cascade复选框:表示如果该接口引用到了其它的自定义Java类,则一
并生成相应的XSD文件。
? 勾选force复选框:表示如果该路径下已存在同名的WSDL文件,则覆盖。 如图:
? 点击“Finish”按钮完成WSDL文件的创建工作。
2.2 创建XSD文件
关联类的XSD文件即可以在1.1创建WSDL文件的过程中级联创建,也可以单独创建。过程如下:
? 在Eclipse IDE中选中准备创建XSD的Java类文件,点击右键弹出功能菜单。选
择WS Tools下的Genarate XSD菜单项,如图:
? 选择后弹出XSD创建面板,设置XSD文件的保存路径。
? 勾选Cascade复选框:表示如果该类引用到了其它的自定义Java类,则一并
生成相应的XSD文件。
? 勾选force复选框:表示如果该路径下已存在同名的XSD文件,则覆盖。如
图:
? 点击“Finish”按钮完成XSD文件的创建工作。
2.3 配置UPM文件
配置UPM文件的工作量并不大,可手工也可使用NC 工具。下面对使用NC 工具配置的流程加以描述,其中涉及到NC WebService Security方面的规范知识可参考《WebService安全配置》文档。
? 在Eclipse IDE中选中要发布为WS服务的接口文件或实现类,点击右键弹出功能
菜单。选择WS Tools下的Publish Web Service菜单项后弹出UPM文件选择窗口,如图:
? 点击“Next”后进入如下配置页,最下面的interface,impl是两个必填项。指明要
发布为ws服务的接口和实现类。“设置属性”栏中的各项属性是NC组件正常发布所需要的配置项,这里不做介绍,可参考组件发布的相关文档。需要指出的是如果配置了组件名则这个组件名就是WS的服务名,否则系统会将下页配置的Address做为WS的服务名。
? 点击“Next”后进入如下配置页。
ExtensionClass:指定了Server启动时部署这个组件的处理类。 Web Service Style:暂时只能选NC specify。
如果勾选了“Create WSDL if not exist”项,则当未创建wsdl 、xsd文件时会自动创建。
Wsdl location:指出wsdl 文件的位置。
Address:是WS服务地址,结构为“/”+服务名。 Interceptor:拦截器。
? 点击“Next”进入WebService 安全配置项。
勾选web service 安全配置项。
选择KeyStore,从modules/uapws/config/ws-security.xml中选择。默认的是该文件中crypto id为default的KeyStore。
decKS:解密需要的KeyStore。 encKS:加密需要的KeyStore。 signKS:签名需要的KeyStore。 verifyKS:验证签名需要的KeyStore。
? 点击“Next”,进入WebService安全详细信息配置页。
? 配置Protect项。如果在上一页的安全配置项中勾选了“要求认证授权”,则在
当前的详细信息配置页中需要配置Protect项。如图:
认证组件:如果没有配置,表示使用系统默认的认证器。他为对nc.uap.ws.security.IAuthenticator
组件的引用
。
默认为名称为
nc.uap.ws.security.IAuthenticator的组件。
授权组件:如果没有配置,表示使用系统默认的权限机制,他为对nc.uap.ws.security.IAccessController
的组件的引用,默认为名称
nc.uap.ws.security.IAccessController的组件。
? 配置UserToken项。如果在上一页的安全配置项中勾选了“要求输出token”,
则在当前的详细信息配置页中需要配置UserToken项。如图:
在profile下拉框中点选“UsernameProfile”后出现如下配置页。
配置在信息输出时提供给别人的主体信息,profile表示遵循的SecurityToken规范,目前只支持UsernameProfile。对于UsernameToken的profile,有属性:user, password, cbClass, cbRef。如果指定了user/password就不需要cbClass,cbRef的配置。user/password表示一种静态的用户名/密码信息提供,而cbClass,cbRef表示一种动态的复杂的用户名密码提供方式。cbClass为javax.security.auth.callback.CallbackHandler
的
类
,
cbRef
为
javax.security.auth.callback.CallbackHandler组件的引用(该描述适合后续的sign,encrypt的描述。
? 配置Signature项。如果在上一页的安全配置项中勾选了“要求输出签名”,则
在当前的详细信息配置页中需要配置Signature项。如图:
签名确认:勾选此项表示在应答时需要返回请求方的signature,否则不返回请求方的signature。
签名用户:从签名对应的KeyStore中选取用于签名的私钥名。
Callback:如果签名用户的获取方式比较复杂不能直接指定而是通过callback方式获取的。则此处需要配置callback项。
Key标识方式:指示签名或加密的key的值应用方式,默认为IssuerSerial。 Canonical:指示正规化算法没有设定,默认为,http://www.w3.org/2001/10/xml-exc-c14n#。
算法:指定Key的算法。可以不选,此时系统会自动判断算法类型。 签名元素:指定需要签名的信息。
? 配置verify项。如果在上一页的安全配置项中勾选了“要求输入签名”,则在
当前的详细信息配置页中需要配置Verify项。如图:
如果不存在通信双方互为Server的情况(NC的目前应用基本不存在),建议不要勾选Confirm项。
? 配置encrypt项。如果在上一页的安全配置项中勾选了“要求输出加密”,则在
当前的详细信息配置页中需要配置encrypt项。如图:
?
加密用户:从加密对应的KeyStore中选取用于加密的密钥名。
用户回调类:如果加密用户的获取方式比较复杂不能直接指定而是通过callback方式获取的。则此处需要配置用户回调类。
Key标识方式:指示签名或加密的key的值应用方式,默认为IssuerSerial。 Key加密算法:系统只支持RSA15算法。 算法:加密算法。
加密元素:指定需要加密的信息。
? 配置decrypt项。目前没有需要配置的内容。
完成上面的配置后,点击“Finish”按钮,保存配置信息。
3 客户端调用
NC的WebService客户端调用需要有服务接口类,可以利用WSDL文件创建服务接口,WSDL文件可以远程获取。
拥有了服务接口后就可以利用API进行客户端对服务端的访问了。
3.1 创建服务接口
注意:使用NC的Eclipse插件创建JAVA接口的过程中,可以自动创建相关JAVA类文件。这样比单独创建相关JAVA类文件便捷。
3.1.1 创建相关JAVA类文件
? 在Eclipse IDE中选中要创建JAVA类文件的XSD文件,点击右键弹出功能菜单。
选择WS Tools下的Genarate Java Class菜单项,如图:
? 选择后弹出Java类文件创建面板,设置类文件的保存路径。如图:
force复选框表示是否要覆盖该保存路径下的同名文件。 点击“Finish”按钮完成创建工作。
3.1.2 创建JAVA接口
? 在Eclipse IDE中选中要创建SEI的WSDL文件,点击右键弹出功能菜单。选择
WS Tools下的Genarate Java Interface菜单项,如图:
? 选择后弹出SEI创建面板,设置SEI文件的保存路径。如图:
cascade复选框:表示是否级联创建相关的Java类文件。 force复选框:表示是否要覆盖该保存路径下的同名文件。 点击“Finish”按钮完成创建工作。
3.2 API使用
可以通过API进行安全特性的配置和控制:
3.2.1 WSS4JConfig
配置的核心类,所有安全属性的配置信息都在里面。每个属性都有get/set方法。现逐一介绍其属性的含义。
?
encCryptoId:在NC的WebService安全配置文件中,Crypto标签描述了KeyStore的访问信息。CryptoId是Crypto 的唯一标识。encCryptoId标识的Crypto描述了用于加密信息所使用的Key的访问信息。 ? ? ? ?
decCryptoId:用于解密的Crypto。 signCryptoId:用于签名的Crypto。 verifyCryptoId:用于验证签名的Crypto。
securityToken:安全令牌,类型是SecurityToken, NC目前只支持UsernameToken。 ? ? ? ? ?
sign:类型是SignAdvice,描述了签名信息。
verify:类型是VerifyAdvice,描述了验证签名的信息。 encrypt:类型是EnryptAdvice,描述了加密的信息。 decrypt:类型是DecryptAdvice,描述了解密的信息。 authentication:类型是Authentication,描述了认证信息。
3.2.2 UsernameToken
用于配置进行请求的主体,其属性描述如下:
? user:用户名。 ? password:密码。
? nonce:布尔型,是否附带随机数。
? created:布尔型,是否附带Token创建时间。
? callbackHandler:类型是CallbackHandler,获取密码的回调处理类。
? pwType:类型是PwType,密码的类型,包括三种:
? PasswordNone:没有密码。 ? PasswordText:密码是明文形式。 ? PasswordDigest:密码是摘要形式。
3.2.3 Cryptic
该类是SignAdvice、EncryptAdvice的超类。其属性描述如下:
? user:用户名,用来进行私钥签名的key的标识。 ? algorithm:加密算法。
? callbackHandler:类型是CallbackHandler,用来获取密码的回调处理类。 ? keyIdentifier:类型是KeyIdentifier,指明Key的获取方式。 ? parts:类型是List
3.2.4 SignAdvice
用于保存签名信息,继承了Cryptic,其属性描述如下:
? confirm:布尔型。应答时,是否需要返回请求方的signature。这个属性适合在
服务方配置。
? canonicalAlgorithm:规范算法。
3.2.5 EncryptAdvice
用于保存加密信息,继承了Cryptic,其属性描述如下:
? keyEncryptionAlgorithm:Key加密算法类型。
3.2.6 DecryptAdvice
用于保存解密信息。 暂无任何属性。
3.2.7 VerifyAdvice
用于保存校验信息,其属性描述如下:
? confirm:布尔类型。是否需要验证服务方的应答信息中是否包含自己发送请求的
signature。这个属性只适合用在请求方配置。
3.2.8 测试用例
public class EmployeeServiceClient extends AbstractWSTestCase { protected String getPort() { return \ } protected String getSecurityConfig() { return \} //只认证 public void testInsertUT() { EmployeeService client = getLocator().lookup(EmployeeService.class); Department dept = new Department(); Employee e1 = new Employee(); e1.setName(\ e1.setAge(30); Employee e2 = new Employee(); e2.setName(\ e2.setAge(20); Map
//设置用户名密码 WSS4JConfig wss4jContext = new WSS4JConfig(); wss4jContext.setSecurityToken(new UsernameToken(\\ ((Client) client).setWSS4JConfig(wss4jContext); Department obj = client.insert(new Employee[] { e1, e2 }, dept); assertTrue(obj.getEmployees().length == 2); assertTrue(obj.getEmployees()[0].getName().equals(\ assertTrue(obj.getEmployees()[0].getAge() == 30); assertTrue(obj.getFeature().size() == 2); assertTrue(obj.getFeature().get(\ } //进行签名的安全示例 public void testInsertSign() { WSS4JConfig wss4jContext = new WSS4JConfig(); wss4jContext.setSecurityToken(new UsernameToken(\\ //默认采用了UsernameToke中的用户名密码信息访问私钥签名 wss4jContext.setSignAdvice(new SignAdvice()); ((Client) client).setWSS4JConfig(wss4jContext); … } //加密 public void testInsertEnc() { … //设置用于加密的信息 WSS4JConfig wss4jContext = new WSS4JConfig(); wss4jContext.setSecurityToken(new UsernameToken(\\ wss4jContext.setEncryptAdvice(new EncryptAdvice(\ ((Client) client).setWSS4JConfig(wss4jContext);… } //同事签名加密 public void testInsertSignEnc() { … WSS4JConfig wss4jContext = new WSS4JConfig(); wss4jContext.setSecurityToken(new UsernameToken(\\ wss4jContext.setSignAdvice(new SignAdvice()); wss4jContext.setEncryptAdvice(new EncryptAdvice(\ } } 而后台服务会根据配置,自适应的签名/加密或者强制加密签名。
备注:
生成upm文件后,要重启中间件,再看http://127.0.0.1/uapws/service 有没有,如果没有,就是发布错误。
错误的话,到nchome/nclogs/下面看nc-log.log和fw-log.log看为什么错误。
正在阅读:
webservice开发技术说明书03-16
小学生二年级春天的花作文300字06-13
第二章练习题06-14
WXH-803说明书04-17
现代大学英语精读第一册 Lesson308-30
日本岛津GC-14B气相色谱仪使用说明书 - 图文03-15
兴化市2013-2014学年八年级(下)期末考试数学试题及答案08-20
20大必背范文09-23
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 开发技术
- 说明书
- webservice
- rootdbs+logdbs+phydbs配置文件
- 资产评估第一章课后习题1
- 训 诂 学
- 高中生物第1章走近细胞第2节细胞的多样性和统一性练习新人教版必
- 两票三制供电试卷C答案
- 为什么会出现“先污染后治理”的现象
- 西大2017版《管理学》网上作业题及答案
- 最新部编人教版小学三年级数学上册期末测试题及答案
- 变形牛顿环装置干涉条纹特点的研究及应用
- 实验室管理员及协管员管理方案
- 小升初语文知识专项训练(基础知识一)-5.查字典(20页).
- 重庆专升本高等数学模拟试题一(各种题精心整理)
- 医学试题库
- 机械毕业论文总结
- 浅析废旧塑料的处理与综合利用
- 金融市场学(第三版)课后答案 - 郑振龙 - 张亦春
- 2017年四川省成都市数学中考试卷(真题)
- 党支部工作手册填写规范要求
- 四探针和EIT 测试微区薄层电阻的研究与进展
- 以案解析《关于农村集体土地确权登记发证的若干意见》