1

私はまだ WCF に不慣れで、WCF で特定のセクションが必要な場合、なぜ必要なのかについていくつか質問がありました。

1) データベースと通信するために WCF サービスを使用するアプリケーションがあります。ローカル マシンでテスト SSL 証明書をセットアップし、WCF サービスの web.config を次のようにセットアップします。

  <wsHttpBinding>
    <binding name="MyService" maxReceivedMessageSize="2147483647">
      <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
        maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Windows" />
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>

私は SSL セットアップを持っているので、clientCredentialType を Windows に設定することでトランスポート セキュリティが必要であると読んだので、それは何をしますか? SSL は、やり取りされるデータのセキュリティを管理していませんか? ユーザーを認証するためのカスタム クラスをセットアップしたため、メッセージの一部が表示されます。トランスポートに必要な理由がわかりません。必要がない場合、Windowsにセットアップするとどうなりますか。それは、会社のネットワーク内のすべてのメッセージが問題ないことを意味しますが、そのネットワークの外に何かがある場合ブロックされているサービスと通信しようとしますか?

2) このセクションでは:

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />

生産に行くときは、両方とも false に設定する必要がありますか? このように、本番 URL へのサービス参照を設定しようとする他のアプリケーションはブロックされるか、プロキシ クラスを構築できなくなりますか?

3) includeExceptionDetailInFaults、常に false のままにしておく必要がありますか? 現在、WCF サービスでエラーが発生すると、コードで新しい FaultException をスローし、それが Web アプリケーションのメソッドに伝播され、エラー メッセージが記載された電子メールが送信されます。ユーザーは一般的なエラーを受け取るだけです。ページ。

ありがとうございました。

4

2 に答える 2

2

1.サービスを内部で使用している場合は、この構成を使用できますが、クライアントとサーバーの両方が同じドメインにある必要があります。特定の証明書は Windows のユーザー レベル証明書ストアに配置されるため、Windows 資格情報が必要です。それらを認証するには、ユーザー資格情報を提供する必要があります。

2.誰にもプロキシを作成させたくない場合は、先に進みます。

<serviceMetadata httpGetEnabled="false" httpsGetEnabled="true" />

ユーザーは、http ではなく https 接続でのみ WSDL メタデータを表示できることを示します。そのため、プロキシを作成する必要がある場合は、サービスの https URL を使用する必要があります。

3.ユーザーにエラーの詳細を表示したくない場合は、要件によって異なります。それなら大丈夫です。これは、デバッグの場合にのみ必要です。だからあなたは正しいです。

トランスポート セキュリティの詳細

<security mode="Transport">
    <transport clientCredentialType="Windows" />
</security>
于 2013-01-02T20:27:06.033 に答える
1

ここで多くの有用な情報: http://msdn.microsoft.com/en-us/library/aa354508.aspx

そしてここ: http://msdn.microsoft.com/en-us/library/ms789011.aspx

1) トランスポート セキュリティは、ネットワーク レベルのセキュリティを処理するだけです。Message+Transport を指定すると、メッセージ自体にも認証が必要になることを意味します。有効な SSL 構成を持つだけでは十分ではありません。ClientCredential Windows は、実行中のプロセスの有効な Windows 資格情報の使用を試みることを意味します。

デフォルトでは、wsHttpBinding バインディングは HTTP 通信を提供します。トランスポート セキュリティ用に構成すると、バインディングは HTTPS 通信をサポートします。HTTPS は、ネットワーク上で送信されるメッセージの機密性と完全性を保護します。ただし、サービスに対してクライアントを認証するために使用できる認証メカニズムのセットは、HTTPS トランスポートがサポートするものに限定されます。Windows Communication Foundation (WCF) は、この制限を克服するように設計された TransportWithMessageCredential セキュリティ モードを提供します。このセキュリティ モードを構成すると、トランスポート セキュリティを使用して、送信されるメッセージの機密性と整合性が確保され、サービス認証が実行されます。ただし、クライアント認証は、クライアント資格情報をメッセージに直接入れることによって実行されます。

2) HTTP の「GET」操作を許可するかどうかは、完全にあなたとあなたのセキュリティ設定次第です。サービスが少しわかりにくくなりますが、使いにくくなります。

3) 応答に例外の詳細を含めるかどうかは、サービスの消費者をどれだけ信頼しているかに大きく依存します。消費者が例外を持っている場合、消費者は自分の過ちにうまく対応できるようになりますが、サービスの実装についてより多くの情報を得ることができます。

于 2013-01-02T20:33:12.743 に答える