web-dev-qa-db-ja.com

WSHttpBinding(サービス側)またはWCFテストクライアント(クライアント側)でデフォルトで使用されるセキュリティは何ですか?

最近、サービスをBasicHttpBindingからWSHttpBindingに移動しました(つまり [〜#〜] soap [〜#〜] 1.1-> SOAP 1.2)。In [〜#〜] wcf [〜#〜] 、WSHttpBinding()を使用すると、デフォルトのセキュリティ設定の使用が開始されます。クライアントとサーバーは続行できるため、同じデフォルトのセキュリティ設定がWCFテストクライアントでも使用されていると思います「保護された」WSHttpBindingに切り替えた後に話します。フィドラーでは、以前は完全に単純だった要求/応答からのより複雑なセキュリティハンドシェイクを確認できるため、このセキュリティ設定を確認しました。

変更前:(BasicHttpBinding)

  1. [HttpRequest](クリアなSOAPリクエスト)

    [HttpResponse](SOAP Response in Clear)

After:(WSHttpBinding)

  1. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  2. [HttpRequest] RequestSecurityToken

    [HttpResponse] RequestSecurityTokenResponse

  3. [HttpRequest] RequestSecurityTokenResponse

    [HttpResponse] RequestSecurityTokenResponseCollection

  4. [HttpRequest] EncryptedData

    [HttpResponse] EncryptedData

  5. [HttpRequest] EncryptedData(実際のアプリケーションレベルのリクエスト)

    [HttpResponse] EncryptedData(実際のアプリケーションレベルの応答)

したがって、セキュリティが適用されていると想定できます。次に質問です。

質問1:セキュリティ設定とは何ですか?メンバーシッププロバイダーについてWCFに伝えたことはありません。実際、ユーザー名<->パスワードのテーブル(SQLまたはXML)はありません。では、どのような認証が行われているのでしょうか。 WCFテストクライアントは上記のように認証できますが、SoapUIはこれらのMicrosoft .NETデフォルトを取得しないため、問題があります。 SoapUIがクリアテキスト通信を試行すると、サーバーは不正なセキュリティトークンエラーで応答します。

質問2:SOAP 1.2?(?)の最も一般的に実施されているセキュリティモデルは何ですか?証明書、ユーザー名、パスワード、ダイジェスト、または_____によるものですか?これらの資格情報は保存され(SQL/XML?)、WCFサーバー側で構成されますか?

8
DeepSpace101

まあ、有名なWSHTTPBinding。 .NET以外のプラットフォームでは多くの問題が発生します。

まず、SOAP 1.2が標準である場合でも、WSHTTPBindingはSOAP 1.2を超えるMicrosoftの実装であり、経験上、 "当社の製品サポートSOAP 1.2なので、WCFおよびWSHTTPBindingサービスで問題なく動作します!"

回答1

2つの主要なセキュリティ設定があります。

  • Message Security:メッセージは部分的に暗号化されています、デフォルト
  • Transport Security:SSLを使用してチャネルを保護します

認証について、WSHTTPBindingはデフォルトでWindows資格情報(NTLMまたはKerberos)を使用します。

回答2

状況によって異なりますが、簡単な答えは次のとおりです。

  • メッセージを再ルーティングまたは検査する必要があります:Message Securityを使用します
  • ポイントツーポイントチャネルが必要で、証明書でそれらを保護できます:Transport Securityを使用します
  • クライアントとサーバーは同じ認証プラットフォームを共有し、Windows認証を使用します
  • 外部クライアントまたはクロスプラットフォーム用のオープン認証が必要です、Username authenticationを使用してください

ユーザー名認証については、さまざまな構成があります。資格情報はSQLデータベースに保存できます(一部のサービスについては、社内でこれを行っています)。

いくつかの単純なケース:Webサービスセキュリティの改善:WCFのシナリオと実装ガイダンス

7
JoeBilly