我正在开发一个将调用Web服务操作的ios应用程序。现有Web服务配置为将wsHttpBinding安全性设置为TransportWithMessageCredential。
我已经使用wsdl2objc生成实现文件(来自wsdl),并设置了一个小应用程序用于测试目的。我无法让应用程序正确地与Web服务通信,而且根据我的阅读,这些Web配置设置(wsHttpBinding,传输和消息安全性)似乎几乎不可能。
我做了很多研究,在本网站(以及其他网站)上发现的信息的帮助下,我设法找出了SOAP请求的样子。我基本上使用WCF测试客户端和Fiddler监控流量。我也试过soapUI,这并不像我希望的那样成功。
我在本地设置了一个测试Web服务并且我可以成功使用,但只有当Web配置具有使用BasicHttpBinding或wsHttpBinding安全模式=“无”的安全性时(我理解它就像basicHttpBinding)。
我的解决方案(我希望)是......如果我写一个Web服务来调用这个Web服务怎么办?两个Web服务都将驻留在服务器上,但iphone将使用的服务配置为SSL。然后,想法是使用ios安全框架(HMAC)或其他散列算法手动加密操作(和必要的属性),并使SSL Web服务解密,然后从现有Web服务调用所请求的操作。这有意义吗?我觉得这似乎太简单了,我必须遗漏一些东西。有没有人看到这个真正的问题?
感谢。
编辑我只是想澄清一下我的情况:我的应用程序无法使用已配置的现有Web服务。我的想法是创建一个与此服务器交谈的Web服务。新的Web服务将简单地解密传入的数据并调用现有Web服务上的方法。收到响应后,新的Web服务将加密数据并将其发送回iphone应用程序。对不起,如果我不清楚。
更新
这是肥皂信封(来自Fiddler):
<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"
xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<s:Header>
<a:Action s:mustUnderstand="1">http://tempuri.org/IService/ValidateMe</a:Action>
<a:MessageID>urn:uuid:81d70393-5356-4e3a-b209-49ea53068935</a:MessageID>
<a:ReplyTo>
<a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address>
</a:ReplyTo>
<a:To s:mustUnderstand="1">https://mibe.stpa.com/WCFService/IVService.svc/ValidationService</a:To>
<o:Security xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" s:mustUnderstand="1">
<u:Timestamp u:Id="_0">
<u:Created>2013-02-10T04:48:18.646Z</u:Created>
<u:Expires>2013-02-10T04:53:18.646Z</u:Expires>
</u:Timestamp>
<c:SecurityContextToken xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc" u:Id="uuid-0191ec20-905d-4ef0-a818-3eced0e02ecf-32">
<c:Identifier>urn:uuid:06bd1d3e-97e5-41bc-afce-3993736f202d</c:Identifier>
</c:SecurityContextToken>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1"/>
<Reference URI="#_0">
<Transforms>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>/RpEprwYbnSypHXVF/rdxn3nkRo=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>ya8hHooO129dNOHplhY3xRndoDk=</SignatureValue>
<KeyInfo>
<o:SecurityTokenReference>
<o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" URI="#uuid-0191ec20-905d-4ef0-a818-3eced0e02ecf-32"/>
</o:SecurityTokenReference>
</KeyInfo>
</Signature>
</o:Security>
</s:Header>
<s:Body>
<ValidateMe xmlns="http://tempuri.org/">
<memberId>950470173</memberId>
</ValidateMe>
</s:Body>
</s:Envelope>