webservices 安全

nql10 2004-11-22 09:51:59
刚接触webservice不久,碰到下面的需求:
请教高人,我怎么实现,最好有代码,先谢了;


1.1 短信计费接口规范描述和应用范围
短信计费接口规范描述了一组对外的接口函数,通过这组接口函数可以确保在计费数据库中记录相应的数据。客户端和接口通过soap/http协议进行通讯,并以web service的方式公开这组接口函数。
在这里,我们用WSDL(网络服务描述语言)来描述每个接口函数和它的参数。用WSDL具有规范和清晰的优点。
有关SOAP的详细信息请参考如下的链接:http://www.w3c.org/tr/soap
有关WSDL的详细信息请参考如下的链接:http://www.w3c.org/tr/wsdl
1.2 安全描述
考虑到传输内容的敏感性和重要性,所有必要对传输的内容进行加密处理并对客户端身份进行检查。
在这里,我们使用WS-Security、WS-SecureConversation、WS-SecurityPolicy作为加密处理的标准。具体的标准请参考:
WS-Security:http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
WS-SecurityPolicy:http://schemas.xmlsoap.org/ws/2002/12/secext
WS-SecureConversation:http://schemas.xmlsoap.org/ws/2004/04/sc
2 实现
2.1 安全
在以下所有的Web Service接口函数调用中都做下列约定:
每个函数调用都包含一个soap header,服务器用这些信息进行客户端的身份实体检查;这个soap header服从WS-Security的UsernameToken规定,并应包含:
Username:用户名
Password:密码,这个密码是一个双方协商的已知的密码。这个密码并不需要出现在UsernameToken中。

每个函数调用都应对出现在soap body中的信息进行加密处理,加密的算法定为:AES128。密钥为:soap header中的Password。
2.2 编码
所有的soap message都以utf8进行编码。

2.3 Web Service的接口函数
下列的Web Service接口函数使用C#语言进行描述,其它的编程语言可以参考随本文档一起分发的WSDL文件。

[WebMethod]
public string FillBS(string Info)
说明:完成短信到计费系统的充值、锁定用户等功能。
参数:字符串,具体的内容随协议的变化而变化。
返回值:操作结果。
...全文
192 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
usabcd 2004-11-25
  • 打赏
  • 举报
回复
我对你说的AES有疑问,WS-Security是以非对称加密为基础的规范。
一般都是RSA, 怎么会是AES
Axis有示例,演示了怎样加密SOAP包,功能流程跟WS-Security很类似,
不过不完全符合WS-Security规范,
Apache有一个另外的项目WSS4J专门做WS-Security的,
只是目前还没有出正式版本,你可以自己用CVS下载编译。

http://ws.apache.org/ws-fx/wss4j/cvs-usage.html
usabcd 2004-11-24
  • 打赏
  • 举报
回复
为什么要用AES呢,一般都用非对称加密吧。
搞这么麻烦干嘛,直接用SSL足够了。
nql10 2004-11-24
  • 打赏
  • 举报
回复
300分相送
nql10 2004-11-24
  • 打赏
  • 举报
回复
现在的问题变为怎么用tsik.jar包来加密soap消息体
其中算法为:AES128,密钥为:AAAAAAAA
soap消息为:
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Body>
<ns1:getTax xmlns:ns1="http://hellking.webservices.com/">
<op1 xsi:type="xsd:double">5000.0</op1>
</ns1:getTax>
</soapenv:Body>
</soapenv:Envelope>


csj43269 2004-11-24
  • 打赏
  • 举报
回复
顶一下
nql10 2004-11-22
  • 打赏
  • 举报
回复
自己先顶一下,
分不够再加,在下的MSN:nql10@hotmail.com
nql10 2004-11-22
  • 打赏
  • 举报
回复
WSDL文件:


<?xml version="1.0" encoding="utf-8"?>
<wsdl:definitions xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:s="http://www.w3.org/2001/XMLSchema" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://tempuri.org/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" targetNamespace="http://tempuri.org/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
<s:element name="GetSrvTime">
<s:complexType />
</s:element>
<s:element name="GetSrvTimeResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="GetSrvTimeResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="FillBS">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="Info" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="FillBSResponse">
<s:complexType>
<s:sequence>
<s:element minOccurs="0" maxOccurs="1" name="FillBSResult" type="s:string" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="GetSrvTimeSoapIn">
<wsdl:part name="parameters" element="tns:GetSrvTime" />
</wsdl:message>
<wsdl:message name="GetSrvTimeSoapOut">
<wsdl:part name="parameters" element="tns:GetSrvTimeResponse" />
</wsdl:message>
<wsdl:message name="FillBSSoapIn">
<wsdl:part name="parameters" element="tns:FillBS" />
</wsdl:message>
<wsdl:message name="FillBSSoapOut">
<wsdl:part name="parameters" element="tns:FillBSResponse" />
</wsdl:message>
<wsdl:portType name="WS_SMS_BSSoap">
<wsdl:operation name="GetSrvTime">
<wsdl:input message="tns:GetSrvTimeSoapIn" />
<wsdl:output message="tns:GetSrvTimeSoapOut" />
</wsdl:operation>
<wsdl:operation name="FillBS">
<wsdl:input message="tns:FillBSSoapIn" />
<wsdl:output message="tns:FillBSSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="WS_SMS_BSSoap" type="tns:WS_SMS_BSSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<wsdl:operation name="GetSrvTime">
<soap:operation soapAction="http://tempuri.org/GetSrvTime" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="FillBS">
<soap:operation soapAction="http://tempuri.org/FillBS" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="WS_SMS_BS">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
<wsdl:port name="WS_SMS_BSSoap" binding="tns:WS_SMS_BSSoap">
<soap:address location="http://localhost/WS_SMS_BS/WS_SMS_BS.asmx" />
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
nql10 2004-11-22
  • 打赏
  • 举报
回复
怎么会没有人来?我好急!!

50,504

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧