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>