SilverlightでSSLクライアント側証明書を使用してRESTfulWebサービスにアクセスする方法の正しい方向を誰かに教えてもらえますか?
それらをどのように処理するか、あるいはそれらがサポートされているかどうかについてさえ、私は何も見つけることができないようです。
乾杯。
SilverlightでSSLクライアント側証明書を使用してRESTfulWebサービスにアクセスする方法の正しい方向を誰かに教えてもらえますか?
それらをどのように処理するか、あるいはそれらがサポートされているかどうかについてさえ、私は何も見つけることができないようです。
乾杯。
ブラウザーの HTTP スタックを使用しているか、クライアントの HTTP スタックを使用しているかによって異なります。クライアント スタックはクライアント証明書をサポートしていません。ブラウザー スタックは、他の制限 (すべての HTTP 動詞のサポートの欠如、応答ステータス コードの強制など) を受け入れる意思がある場合、ほぼ自動的にそれを行います。
ただし、OOB シナリオでクライアント証明書を使用してブラウザ スタックを使用すると、問題が発生します。Prism モジュールの読み込みは、これらの条件下で失敗します。リクエストは IIS に到達しますが、明らかな理由もなく 500 サーバー エラーが発生します。クライアント証明書を無視するように IIS を設定した場合、またはブラウザーでアプリを実行した場合、正常に動作します:-/
Slipjig は次のように述べています。
「ブラウザ スタックは、他の制限 (すべての HTTP 動詞のサポートの欠如、応答ステータス コードの強制など) を受け入れる意思がある場合、ほとんど自動的にそうします。」
それが受け入れられる場合は、Microsoft 自身がカスタム X-HTTP-Method ヘッダーを使用して一部の API でこれを処理する方法を見てください。たとえば、WCF や OData に対してどのように処理するかです。
http://www.odata.org/developers/protocols/operations
Microsoft は、MSDN で、REST を SharePoint 2010 の WCF ベースの REST API と組み合わせて使用することについても言及しています。
msdn.microsoft.com/en-us/library/ff798339.aspx
「実際には、多くのファイアウォールやその他のネットワーク仲介者が、GET および POST 以外の HTTP 動詞をブロックしています。この問題を回避するために、WCF Data Services (および OData 標準) は、「動詞トンネリング」と呼ばれる手法をサポートしています。この手法では、PUT、 DELETE および MERGE 要求は POST 要求として送信され、X-HTTP-Method ヘッダーは、受信者が要求に適用する必要がある実際の動詞を指定します。詳細については、MSDN の X-HTTP-Method および OData: 操作 ( OData Web サイトの Method Tunneling through POST セクション)」を参照してください。
Don Boxもこれについていくつかの言葉を持っていましたが、具体的にはGDataに関して:
www.pluralsight-training.net/community/blogs/dbox/archive/2007/01/16/45725.aspx
「私が GData クライアントを構築していた場合、X-HTTP-Method-Override がより多くのケース/展開で機能することを考えると、なぜわざわざ DELETE および PUT メソッドを使用するのか疑問に思っています。」
Silverlight と Java の相互運用性に関する記事があり、同じアドバイスを提供することで、Silverlight のこの制限にも対処しています。
www.infoq.com/articles/silverlight-java-interop
「Silverlight は GET および POST HTTP メソッドのみをサポートします。一部のファイアウォールは、PUT および DELETE HTTP メソッドの使用を制限します。
真の RESTful サービスは (上記のすべての REST 原則に準拠して) GET および POST HTTP メソッドを使用してのみ作成できることを指摘することが重要です。つまり、REST アーキテクチャは HTTP への特定のマッピングを必要としません。Google の GData X-Http-Method-Override ヘッダーは、このアプローチの例です。
Web サービスが POST の X-HTTP-Method-Override ヘッダーを解釈する場合、次の HTTP メソッド オーバーライドをヘッダーに設定して、PUT および DELETE アクションを実行できます。
* X-HTTP-Method-Override: PUT
* X-HTTP-Method-Override: DELETE"
これが役立つことを願っています-ジョシュ
Dim url As Uri = New Uri(Application.Current.Host.Source, "../WebService.asmx")
Dim binding As New System.ServiceModel.BasicHttpBinding
If url.Scheme = "https" Then
binding.Security.Mode = ServiceModel.BasicHttpSecurityMode.Transport
End If
binding.MaxBufferSize = 2147483647 'this value set to override a bug,
binding.MaxReceivedMessageSize = 2147483647 'this value set to override a bug,
Dim proxy As New ServiceReference1.WebServiceSoapClient(binding, New ServiceModel.EndpointAddress(url))
proxy.InnerChannel.OperationTimeout = New TimeSpan(0, 10, 0)