Веб-служба вызова iphone с зашифрованным вручную сообщением

Я разрабатываю приложение IOS, которое будет вызывать операцию веб-службы. Существующая веб-служба настроена с безопасностью wsHttpBinding, установленной как TransportWithMessageCredential.

Я использовал wsdl2objc для генерации файлов реализации (из wsdl) и настроил небольшое приложение для тестирования. Однако я не могу заставить приложение правильно общаться с веб-службой, и из того, что я прочитал, это кажется практически невозможным с этими настройками веб-конфигурации (wsHttpBinding, Transport и Message security).

Я провел немало исследований, и с помощью информации, найденной на этом сайте (и других), мне удалось выяснить, как должны выглядеть запросы SOAP. Я в основном использовал WCF Test Client с Fiddler для мониторинга трафика. Я также попробовал soapUI, что оказалось не так успешно, как я надеялся.

Я настроил тестовый веб-сервис локально, и я могу успешно использовать его, но только когда веб-конфигурация имеет безопасность с использованием BasicHttpBinding или wsHttpBinding security mode = "none" (что, как я понимаю, похоже на basicHttpBinding).

Мое решение (я надеюсь) состоит в том... что если я напишу веб-сервис для вызова этого веб-сервиса? Обе веб-службы будут находиться на сервере, но та, которую будет использовать iphone, настроена с использованием SSL. Идея заключается в том, чтобы вручную зашифровать операцию (и необходимые атрибуты) с помощью инфраструктуры безопасности ios (HMAC) или другого алгоритма хеширования, и расшифровать веб-службу SSL, а затем вызвать запрошенную операцию из существующего веб-службы. Имеет ли это смысл? Я думаю, что это кажется слишком простым, что я должен что-то упустить. Кто-нибудь видит какие-либо реальные проблемы с этим?

Благодарю.

Редактировать Я просто хотел немного прояснить ситуацию: мое приложение не может использовать существующий веб-сервис, так как он настроен. Я думал создать веб-сервис, который будет общаться с этим. Новый веб-сервис просто расшифрует входящие данные и вызовет метод существующего веб-сервиса. Как только ответ получен, новый веб-сервис зашифрует данные и отправит их обратно в приложение 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 ответов

Другие вопросы по тегам