1

基本的に、ASMXファイルをセットアップして、ブラウザーでプルアップしてWebMethod仕様を表示するときに、Soapヘッダーが次の形式に準拠するようにする必要があります。

<soap:Header>
   <wsse:Security>
      <wsse:UsernameToken wsu:Id='SecurityToken-securityToken'>
         <wsse:Username>Username</wsse:Username>
         <wsse:Password>Password</wsse:Password>
         <wsu:Created>Timestamp</wsu:Created>
      </wsse:UsernameToken>
   </wsse:Security>
</soap:Header>

裏話:私はすでに構築されている(そして別の会社が所有している)クライアントアプリケーションと統合しています。基本的に、このクライアントアプリケーションには、他の企業との過去の統合からすべての石鹸メッセージがすでに設定されています。そのため、すでに使用するように設定されているWSDLと一致するASMXファイルを使用してWebサービスを構築することを選択しました。

WS-SecurityをASMXファイルで機能させることは可能ですか、それともASMXが単純すぎて、WFCにアップグレードする必要がありますか(これは本当にやりたくないです)?

4

3 に答える 3

3

WS-SecurityをASMXファイルで機能させることは可能ですか、それともASMXが単純すぎて、WFCにアップグレードする必要がありますか(これは本当にやりたくないです)?

はい、Webサービス拡張機能3(Visual Studio 2005およびASMXのアドオン)を使用できます。WSE-3固有のチュートリアルについては、このMSDNページを参照し、アサーションを使用してください。保護されたトランスポート(SSLなど)を介して接続が行われない限り、これは実際には安全ではないusernameOverTransportSecurityことに注意してください。

ただし、これを行うことはお勧めしません。また、選択した場合に「WCFにアップグレード」したくない理由を理解することはできません。ASMX/WSEの次の非常に重要な制限に注意してください。

  • WSEはサポートされている製品ではなくなりました。それはまだ機能しますが、アップデートやバグ修正さえも受けなくなります。

  • WSEのどのバージョンも、Visual Studio 2008、またはWindowsVistax64以降で実行されているVisualStudio2005に正常に統合されません。

  • WCFは、スレッドセーフなクライアント操作を提供し、プロキシが長期間存在できるようにするために多くの問題を抱えています(これにより、操作ごとのパフォーマンスが大幅に向上します)。一方、WSEプロキシは、(セキュアカンバセーションを使用している場合でも)すべてのリモートメソッド呼び出しでセットアップ時間が発生する、使い捨ての非スレッドセーフオブジェクトです。また、これにより、依存性注入や他の多くの広く使用されているパターンにはほとんど適していません。

これらは、 WSEを使用すべきでない理由のほんの一部です。クライアント側でWCFを使用する必要がある理由は、モデルとプロキシの分離、RESTベースのサービスの利用、コレクションタイプの処理の改善など、さまざまです。

本当にASMXを使い続ける必要がない限り、WCFへの移行を拒否することを再検討してください。サービスがXMLシリアル化で多くの異常なことを行わない限り、切り替えにかかる時間は5分以内です。

于 2010-03-27T14:33:12.167 に答える
2

いいえ、レガシーASMX Webサービスは、WS-Securityまたはその他のWS-*標準をサポートしていません。

Microsoftは現在ASMXWebサービスを「レガシーテクノロジ」と見なしているため、WCFを使用してこの作業を行う必要があります。


別の回答は、WSEの使用を提案しています。これは解決策ではありません。WSEは完全に廃止されており、最後の手段としてのみ使用する必要があります。

于 2010-03-27T06:29:16.543 に答える
1

従来のWebサービスを使用してSOAP/WS-Securityサービスを実装できます。これがMSDNのチュートリアルです。

ただし、WCFではこれらすべてが簡単です。

編集:

間違ったリンクを引っ張った。 これが私が貼り付けるつもりだったものです(WSE 2を使用するCodeProjectチュートリアルですが、WSE 3は最新のリリースであり、WCF以前のみを使用しています)。

于 2010-03-26T22:27:19.233 に答える