最近、サービスをBasicHttpBindingからWSHttpBindingに移動しました(つまり [〜#〜] soap [〜#〜] 1.1-> SOAP 1.2)。In [〜#〜] wcf [〜#〜] 、WSHttpBinding()を使用すると、デフォルトのセキュリティ設定の使用が開始されます。クライアントとサーバーは続行できるため、同じデフォルトのセキュリティ設定がWCFテストクライアントでも使用されていると思います「保護された」WSHttpBindingに切り替えた後に話します。フィドラーでは、以前は完全に単純だった要求/応答からのより複雑なセキュリティハンドシェイクを確認できるため、このセキュリティ設定を確認しました。
変更前:(BasicHttpBinding)
[HttpRequest](クリアなSOAPリクエスト)
[HttpResponse](SOAP Response in Clear)
After:(WSHttpBinding)
[HttpRequest] RequestSecurityToken
[HttpResponse] RequestSecurityTokenResponse
[HttpRequest] RequestSecurityToken
[HttpResponse] RequestSecurityTokenResponse
[HttpRequest] RequestSecurityTokenResponse
[HttpResponse] RequestSecurityTokenResponseCollection
[HttpRequest] EncryptedData
[HttpResponse] EncryptedData
[HttpRequest] EncryptedData(実際のアプリケーションレベルのリクエスト)
[HttpResponse] EncryptedData(実際のアプリケーションレベルの応答)
したがって、セキュリティが適用されていると想定できます。次に質問です。
質問1:セキュリティ設定とは何ですか?メンバーシッププロバイダーについてWCFに伝えたことはありません。実際、ユーザー名<->パスワードのテーブル(SQLまたはXML)はありません。では、どのような認証が行われているのでしょうか。 WCFテストクライアントは上記のように認証できますが、SoapUIはこれらのMicrosoft .NETデフォルトを取得しないため、問題があります。 SoapUIがクリアテキスト通信を試行すると、サーバーは不正なセキュリティトークンエラーで応答します。
質問2:SOAP 1.2?(?)の最も一般的に実施されているセキュリティモデルは何ですか?証明書、ユーザー名、パスワード、ダイジェスト、または_____によるものですか?これらの資格情報は保存され(SQL/XML?)、WCFサーバー側で構成されますか?
まあ、有名なWSHTTPBinding。 .NET以外のプラットフォームでは多くの問題が発生します。
まず、SOAP 1.2が標準である場合でも、WSHTTPBindingはSOAP 1.2を超えるMicrosoftの実装であり、経験上、 "当社の製品サポートSOAP 1.2なので、WCFおよびWSHTTPBindingサービスで問題なく動作します!"。
回答1
2つの主要なセキュリティ設定があります。
認証について、WSHTTPBindingはデフォルトでWindows資格情報(NTLMまたはKerberos)を使用します。
回答2
状況によって異なりますが、簡単な答えは次のとおりです。
ユーザー名認証については、さまざまな構成があります。資格情報はSQLデータベースに保存できます(一部のサービスについては、社内でこれを行っています)。
いくつかの単純なケース:Webサービスセキュリティの改善:WCFのシナリオと実装ガイダンス