0

状況:

  1. IIS7(.NET4)を搭載したWindows2008Webサーバーがあります。
  2. デフォルトのHTTPS(443)ポートを介して のみWebサーバーと通信できます
  3. サーバーでホストされているASP.NETWebサイトがあり、サービスはWebサイトコードの一部です。
  4. 一部のクライアント(WCFをサポートするデスクトップアプリケーション)は、新しいWCFWebサービスと通信したいと考えています
  5. パーティ間のメッセージサイズは100〜400kbです。
  6. WCFサービスをIISの一部として維持したいと思います。
  7. クライアント側では、サービスに接続するためのカスタムユーザー名とパスワードを要求します
  8. より多くのDBプロセスが背後にあるより長いセッションがあります
  9. そして、クライアントからのpingのような短い短いセッションがあります
  10. クライアントのパスワードは(DBから)Webサーバーに保存されます。クライアントはこれらのパスワードに対して認証される必要があります。

質問
1。これらの制約から、使用するのに最適なプロトコルは何でしょうか?
2.デフォルトでセッションを使用しますか?
3.最初にこのバインディングを試しました(動作しますが、セッションのサポートはありません)

  <!--define a SOAP binding-->
  <wsHttpBinding>
    <binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">
      <readerQuotas maxArrayLength="102400" />
      <security mode="Transport">
        <transport clientCredentialType="None" />
      </security>
    </binding>
  </wsHttpBinding>

セッションを有効にするには:

  <wsHttpBinding>
    <binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">          
      <readerQuotas maxArrayLength="102400" />
      <reliableSession enabled="true" />
      <security mode="TransportWithMessageCredential">
        <transport clientCredentialType="Basic" />
        <message clientCredentialType="Certificate"/>
      </security>
    </binding>
  </wsHttpBinding>

私の感じでは、このトランスポートとメッセージのセキュリティは多すぎます。つまり、wsHttpBindingとのセッションを許可するには、これが本当に必要なのでしょうか。

4

2 に答える 2

0
  1. wsHttpBinding では、http とセキュリティを維持し、IIS がサービスのライフ サイクルを管理します。また、専用のアプリケーション プールが必要になる場合もあります。
  2. Session を使用するかどうかは設計の問題です。呼び出し間で維持する状態がある場合はセッションを使用し、それ以外の場合は呼び出しごとに使用します。ping 操作にはセッションは必要ありません。

呼び出しごとに次のバインド構成をお勧めします。

  <wsHttpBinding>
    <binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">          
      <readerQuotas maxArrayLength="102400" />
      <security>
        <message clientCredentialType="Username"/>
      </security>
    </binding>
  </wsHttpBinding>

それが役に立てば幸い!

于 2010-06-17T13:12:05.017 に答える
0

パフォーマンスへの影響がそれほど大きくないので、最後に Session を使用します。また、Web サービスを介して がどのように私たちに話しかけているかを知る必要があるという制約もありました。したがって、認証が必要です。

Beaud の回答は大いに役立ちましたが、欠けていたのはカスタム名とパスワードの検証者でした: http://msdn.microsoft.com/en-us/library/aa702565.aspx

この web.config では:

        <wsHttpBinding>
            <binding name="DefaultSOAPBasedHTTPSBinding" maxReceivedMessageSize="400000">
                <readerQuotas maxArrayLength="102400"/>
                <reliableSession enabled="true"/>
                <security mode="TransportWithMessageCredential">
                    <transport clientCredentialType="Basic"/>
                    <message clientCredentialType="UserName"/>
                </security>
            </binding>
        </wsHttpBinding>

多分それは誰かを助ける...

また、WCF トレースは、これらの魔法のWCF 構成の問題を見つけるときにも大きな助けになります。

<system.diagnostics>
    <trace autoflush="true"/>
    <sources>
        <source name="System.ServiceModel" switchValue="Information, ActivityTracing" propagateActivity="true">
            <listeners>
                <add name="sdt" type="System.Diagnostics.XmlWriterTraceListener" initializeData="SdrConfigExample.e2e"/>
            </listeners>
        </source>
    </sources>
</system.diagnostics>
于 2010-06-19T16:17:08.610 に答える