ASP.NET 3.5 で ASMX ファイルを使用した WS-Security
-
22-09-2019 - |
質問
基本的に、ASMX ファイルをブラウザで取得して WebMethod 仕様を表示するときに、ソープ ヘッダーが次の形式に準拠するように設定する必要があります。
<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>
バックストーリー:すでに構築されている (別の会社が所有している) クライアント アプリケーションと統合しています。基本的に、このクライアント アプリケーションには、過去の他の企業との統合からすべての SOAP メッセージがすでに設定されています。そこで、消費するようにすでに設定されている WSDL と一致する ASMX ファイルを使用して Web サービスを構築することにしました。
ASMX ファイルで WS-Security を動作させることは可能ですか、それとも ASMX は単純すぎるため、WFC にアップグレードする必要があります (これは本当にしたくありません)。
解決
あなたは、古典的なWebサービスを使用してSOAP / WS-Securityのサービスを実装することができます。ここでの AチュートリアルのMSDNから。
このすべては、しかしWCFで簡単になります。
EDITます:
は、間違ったリンクを引っ張りました。 ここで私はかかわらず、用途は2 WSEこと(CodeProjectのチュートリアルを貼り付けるためのものこの1ですWSE 3は、最新のリリースであり、I)は、もっぱら、WCFを事前ことを使用しています。
他のヒント
ASMX ファイルで WS-Security を動作させることは可能ですか、それとも ASMX は単純すぎるため、WFC にアップグレードする必要があります (これは本当にしたくありません)。
はい、を使用して可能です Web サービスの機能強化 3 (Visual Studio 2005 および ASMX のアドオン)。これを参照してください MSDNページ WSE-3 固有のチュートリアルについては、 usernameOverTransportSecurity
主張、これが ない 接続が保護されたトランスポート経由で行われない限り、実際には安全です (つまり、SSL)。
ただし、 推奨されません あなたがそうするのであれば、なぜあなたが「WCF へのアップグレード」という選択肢を「望まない」のか私には理解できません。以下の非常に重要な点にご注意ください ASMX/WSE の制限:
WSEはもうありません サポートされている 製品。まだですが 作品, 、アップデートを受信しなくなります あるいはバグ修正も.
WSE のどのバージョンも、Visual Studio 2008 や、Windows Vista x64 以降で実行されている Visual Studio 2005 に正常に統合することはできません。
WCF は、スレッドセーフなクライアント操作を提供し、プロキシが長期間存在できるようにするために多大な労力を費やしています (これにより、操作ごとのパフォーマンスが大幅に向上します)。一方、WSE プロキシは、(セキュアな会話を使用している場合でも) リモート メソッド呼び出しごとにセットアップ時間がかかる、使い捨ての非スレッドセーフ オブジェクトです。このため、依存関係の注入やその他の広く使用されているパターンにはほとんど適していません。
これらは理由のほんの一部です すべきではありません もうWSEを使用してください。あなたがそうする理由 すべき 使用 WCF クライアント側では、モデルとプロキシの分離、REST ベースのサービスの利用、コレクション タイプの処理の改善など、多岐にわたります。
本当にそうでない限り、 しなければならない ASMX を引き続き使用する場合は、WCF への移行の拒否を再考してください。サービスが XML シリアル化で多くの異常なことをしない限り、切り替えには 5 分もかかりません。
いいえ、レガシーASMX Webサービスは、WS-Securityをサポートする、または他のWS- *標準のあらゆるません。
Microsoftは今、「レガシー技術」であることをASMX Webサービスを考えているので、あなたはWCFを使用してこの仕事をしている必要があります。
<時間>もう一つの答えは、WSEを使用することを提案しています。これは、ソリューションのさらに少ないです。 WSEはフラットアウト廃止され、そして最後の手段としてのみ使用する必要があります。