8

インターネット経由で HR システムにデータを出し入れするための単純な Web サービスを構築する必要があります (これはホストされたソリューションです)。IIS と ASP.Net を .Net 2.0 で使用しています。

それを調べたところ、Webサービスを安全にする方法がいくつかあります.どの方法を選択するかについて、長所と短所についていくつかの見解を示してアドバイスを求めています.

これらは私が知っている方法です:

SSL 経由の SoapHeaders

UID/PWD を SOAP ヘッダーにポストし、SOAP 拡張機能を実装します (リンク)。
実装は非常に簡単で、SSL 経由で非常に安全です。これは、比較的単純であるため、私の好みのオプションです。また、歴史的な理由から、すべての VBScript から Web サービスを使用する必要があるため、単純な SOAP を処理できることはおまけです。 ただし、注意点はありますか?これはセキュリティ上のリスクであるとクライアントから不満を言われることはありますか?

TransportWithMessageCredential での WCF の使用

WS に言及している古い記事をたくさん見つけました。間違いでなければ、これが現在 WCF で提供されているものですか? この Microsoft リンクには入門書があります。
私が正しく理解している場合、これはクライアントとサーバー間の認証に証明書ベースのセキュリティを使用します。これは正しいですか、それとも完全に間違っていますか?
少なくとも実装に関しては、これははるかに大きな仕事になると思います。また、VBScript から Webservice に直接アクセスすることはできないので、それが呼び出す dll を作成し、それをローカルに展開する必要があります - 正しいですか?
これは.Net 2.0でも利用できますか?

その他の方法

  • asmx ファイルへの匿名アクセスを禁止し、IIS に依存してチャレンジ/レスポンスによる認証を行うことができます。これは私のシナリオでは実際に実用的ですが、非常に洗練されていないように感じます (VBScript からそれを機能させる方法もわかりません)。
  • メソッド呼び出しに UID を渡すことは、SoapHeader とは相性が悪いので、使用しません。

この問題に対する最善のアプローチについてアドバイスをいただければ幸いです。Soap ヘッダーが安全である理由について誰かが十分な議論をしている場合は、「十分に安全」である限り、それが最も簡単に使用できるように思われるので、ぜひ聞いてください。

4

5 に答える 5

3

IISとWindowsを使用して認証を提供することを強く検討する必要があります。IISは、着信要求をADユーザー(NTLM、証明書、Kerberosなど)にマップできます。そこから、ユーザーがグループに属していることを要求するために使用できるWindowsPrincipalが作成されます。グループ名をコードにコンパイルしてもかまわない場合は、サービスメソッドでPrincipalPermissionAttributeを使用して、完全に宣言型にすることもできます。

Windowsを使用することで、すべてのセキュリティ問題に対処するプラットフォームを手に入れることができます。パスワードはプレーンテキストで送信されません。また、独自のチャレンジ/レスポンスタイプシステムを作成して指定する必要もありません(yuck)。さまざまなクライアントがさまざまな方法で認証できます(一部のクライアントには証明書が必要で、他のクライアントにはNTLMを許可します)。

最後に、Windowsを使用してユーザーを管理し、.NET Frameworkを使用してセキュリティチェックを実施できるため、コードが少なくなります。

編集:

たぶん、ASMXを保護することは、あなたが見ている唯一のステップであるため、ハッキーだと思いますか?同意します!匿名を拒否したことだけに依存するWebサービスは、確かに非常に弱いように聞こえます。認証が行われた、 Webサービスコード自体がグループメンバーシップを要求する必要があります。そうすれば、サーバーの構成を誤った場合でも、サーバーにアクセスできなくなり、安全ではなくなります。

于 2009-03-19T19:49:29.330 に答える
1

WCF を使用します。.NET 3.0 以上が必要ですが (3.5 SP1 を使用するのと同じように)、.NET 2.0 にいくつかのサービス パックといくつかの新しいアセンブリが含まれているだけなので、安全です。

やむを得ない場合を除き、新しい開発に ASMX Web サービスを使用することは二度とお勧めしません。

「WSE」または「Web Service Extensions」について読んだことがあるかもしれません。これらは廃止され、プロトコルの WS-* セットを実装するための ASMX Web サービスへの一連の拡張機能でした。このことから、Microsoft は ASMX プラットフォームの拡張性が不十分であることを知り、WCF (Windows Communication Foundation) を作成しました。疫病のように WSE を避けてください。

于 2009-03-20T00:45:38.980 に答える
0

WCFはその方法です。いくつかの可能なセキュリティソリューション、いくつかの標準ベースで相互運用可能なもの、いくつかの.NETまたはWindows固有のものを提供します。

「WCFセキュリティ」をすばやく検索すると、多くのリソースが得られますが、この記事から始めることをお勧めします:MicheleLerouxBustamanteによる「FundamentalsofWCFSecurity」

于 2009-03-19T19:57:23.993 に答える
0

先週この問題が発生し、SOAP with SSL を選択しました。また、データの MD5 暗号化キーとしてそれを組み合わせました。これはもちろん、サーバーとクライアントの両方の「所有者」である場合にのみ適用されます。

于 2009-03-19T19:35:13.047 に答える
0

また、IIS で双方向 SSL を試すこともできます。これにより、クライアントが本人であることを確認し、回線を介してデータを暗号化し、提供された証明書に基づいて Web サービスを別のユーザーとして実行することもできます。

于 2009-03-20T00:21:31.703 に答える