1

Web サービス操作を呼び出す iOS アプリを開発しています。既存の Web サービスは、TransportWithMessageCredential として設定された wsHttpBinding セキュリティで構成されています。

wsdl2objc を使用して (wsdl から) 実装ファイルを生成し、テスト用に小さなアプリをセットアップしました。ただし、アプリが Web サービスと正しく通信することはできません。私が読んだ限りでは、これらの Web 構成設定 (wsHttpBinding、トランスポート、およびメッセージ セキュリティ) では事実上不可能のようです。

私はかなりの調査を行い、このサイト (および他のサイト) にある情報を利用して、SOAP 要求がどのように見えるべきかを突き止めることができました。私は基本的に、トラフィックを監視する Fiddler で WCF テスト クライアントを使用しました。また、soapUI も試しましたが、期待したほどうまくいきませんでした。

テスト Web サービスをローカルでセットアップしましたが、正常に使用できますが、Web 構成に BasicHttpBinding または wsHttpBinding security mode = "none" を使用したセキュリティがある場合のみです (これは、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>

4

0 に答える 0