質問

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

調べてみると、Web サービスを安全にする方法はいくつかあります。私は、長所と短所についていくつかの意見を含め、どの方法を選択するかについてアドバイスを求めています。

私が知っている方法は次のとおりです。

SSL 経由の SoapHeader

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

TransportWithMessageCredential での WCF の使用

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

その他の方法

  • I could disallow anonymous access to (匿名アクセスを禁止できます) asmx ファイルを使用して、IIS に依存して 認証を行う チャレンジ/レスポンス。これは実際には 私のシナリオでは実用的ですが、感じます 非常にエレガントではありません(そして、その方法がわかりません VBScriptからもその動作をしてください)。
  • uidをメソッドコールに渡すことは、Soapheaderの貧しいいとこであるため、私はそれを使用しません。

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

役に立ちましたか?

解決

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

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

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

編集:

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

他のヒント

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

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

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

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

WCF が最適です。標準ベースで相互運用可能なもの、.NET または Windows 固有のものなど、多くの可能なセキュリティ ソリューションを提供します。

クイック 「WCF セキュリティ」で検索します 多くのリソースが提供されますが、この記事から始めることをお勧めします。 「WCF セキュリティの基礎」 ミシェル・ルルー・ブスタマンテ著。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top