Как я могу использовать WCF с только basichttpbinding, аутентификация SSL и Стандартная аутентификация в IIS?

Действительно ли возможно установить сервис WCF с аутентификацией SSL и Стандартной аутентификацией в IIS с помощью только BasicHttpBinding-привязку? (Я не могу использовать wsHttpBinding-привязку),

Сайт размещается на IIS 7 с продолжающим набором аутентификации:

   - Anonymous access: off
   - Basic authentication: on
   - Integrated Windows authentication: off !!

Сервисная конфигурация:

<services>
  <service name="NameSpace.SomeService">
    <host>
      <baseAddresses>
        <add baseAddress="https://hostname/SomeService/" />
      </baseAddresses>

    </host>
    <!-- Service Endpoints -->
    <endpoint address="" binding="basicHttpBinding"
              bindingNamespace="http://hostname/SomeMethodName/1"
              contract="NameSpace.ISomeInterfaceService"
              name="Default"
                      />
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
  </service>
</services>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
      <serviceMetadata httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="false"/>
      <exceptionShielding/>
    </behavior>
  </serviceBehaviors>
</behaviors>

Я попробовал 2 типа привязки с двумя различными ошибками:

1 - Ошибка IIS: 'Не удалось найти базовый адрес, который соответствует схеме http для конечной точки с привязкой BasicHttpBinding. Зарегистрированные схемы базового адреса [https].

<bindings>
  <basicHttpBinding>
    <binding>
      <security mode="TransportCredentialOnly">
        <transport clientCredentialType="Basic"/>
      </security>
    </binding>
  </basicHttpBinding>

</bindings>

2 - Ошибка IIS: Настройки безопасности для этого сервиса требуют 'Анонимной' Аутентификации, но это не включено для приложения IIS, которое размещает этот сервис.

<bindings>
  <basicHttpBinding>
    <binding>
      <security mode="Transport">
        <transport clientCredentialType="Basic"/>
      </security>
    </binding>
  </basicHttpBinding>

</bindings>

Кто-то знает, как настроить это правильно? (если возможный?)

19
задан Tim 25 May 2010 в 13:09
поделиться

1 ответ

После некоторого копания и задавания вопросов нескольким коллегам мы, наконец, решили проблему.

Важно понимать, что в данном случае есть 2 аспекта безопасности. Безопасность IIS и безопасность WCF.

Безопасность IIS: Включите SSL и включите базовую аутентификацию. Отключите анонимную аутентификацию. (Конечно, создайте учетную запись/группу windows и установите разрешения на ваше приложение в IIS.)

Безопасность WCF: Поскольку привязка является только BasicHttpBinding, службе не требуется ничего проверять. За это отвечает IIS.

Конфигурация привязки службы:

<bindings>
  <basicHttpBinding>
     <binding>
        <security mode="Transport">
           <transport clientCredentialType="Basic" />
        </security>
     </binding>
  </basicHttpBinding>

И, наконец, чтобы решить первую ошибку, мы удалили конечную точку mex. Эта конечная точка требует привязки HTTP.

Удалено:

<endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/>
24
ответ дан 30 November 2019 в 04:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: