iphone用手动加密的消息调用Web服务

时间:2013-02-11 02:47:15

标签: iphone ios wcf wshttpbinding wsdl2objc

我正在开发一个将调用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>

0 个答案:

没有答案