Заставить WCF использовать HTTPS - PullRequest
2 голосов
/ 29 декабря 2011

Как я могу убедиться, что моя служба WCF работает по протоколу HTTPS, а вся связь по HTTPS?

В моем файле web.config службы, в котором указано http: // ... или https: //....

, ничего нет

HTTPS настроен в IIS, и я могу получить доступ к веб-службе через http и https.

Или это не требуется, если оно все равно зашифровано с защитой на уровне сообщений?

<bindings>
  <wsHttpBinding>
    <binding name="Binding1" maxReceivedMessageSize="20000000">
      <security mode="Message">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

Ответы [ 2 ]

2 голосов
/ 29 декабря 2011

HTTPS - это HTTP через безопасность транспортного уровня (TLS).Чтобы включить его, необходимо настроить привязку для использования безопасности транспорта в дополнение к существующей защите на уровне сообщений:

<bindings>
  <wsHttpBinding>
    <binding name="Binding1" maxReceivedMessageSize="20000000">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="UserName"/>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>
1 голос
/ 29 декабря 2011

здесь конфигурация для https:

<services>
  <service name="WcfTransport.Service1" behaviorConfiguration="MyHttpsBehaviour">
    <endpoint address="" binding="wsHttpBinding" bindingConfiguration="TransportSecurityBinding" contract="WcfTransport.IService1"/>
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange" />
  </service>
</services>

<behaviors>
  <serviceBehaviors >
    <behavior name="MyHttpsBehaviour" >
      <serviceMetadata httpsGetEnabled="true" httpGetEnabled="false" />
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>

<bindings>
  <wsHttpBinding>
    <binding name="TransportSecurityBinding">
      <security mode="Transport">
        <transport clientCredentialType="Windows"></transport>
      </security>
    </binding>
  </wsHttpBinding>
</bindings>

обратите внимание, что httpsGetEnabled установлено в true, а httpGetEnabled установлено в false.Вы также можете удалить конечную точку mex, если вам не нужен обмен метаданными.

ps Безопасность сообщений предназначена для шифрования сообщений, но, конечно, вы можете использовать защиту сообщений с помощью https.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...