Как отключить схемы аутентификации для служб данных WCF

StackOverflow https://stackoverflow.com/questions/2542119

  •  23-09-2019
  •  | 
  •  

Вопрос

Когда я развернул свои службы данных WCF на производственном хостинге, я начал получать следующую ошибку (или аналогичную, в зависимости от того, какие схемы аутентификации активны):

IIS указал схемы аутентификации «Основные, анонимные», но привязка поддерживает только спецификацию одной схемы аутентификации.Действительными схемами аутентификации являются Digest, Curange, NTLM, Basic или Anonymous.Измените настройки IIS, чтобы использовать только одну схему аутентификации.

По-видимому, службы данных WCF (WCF в целом?) не могут обрабатывать более одной активной схемы аутентификации.

Хорошо, я знаю, что могу отключить схему аутентификации «все, кроме одного» в веб-приложении через панель управления IIS....через запрос в службу поддержки!!

Есть ли способ указать единую схему аутентификации на уровне каждой службы в файле web.config?

Я подумал, что это может быть так же просто, как внести изменения в <system.serviceModel> но...Оказывается, что Службы данных WCF не настраиваются в веб-конфигурации..Если вы посмотрите на DataService<> класс, он не реализует [ServiceContract] следовательно, вы не можете ссылаться на него в <service><endpoint>... который, как я полагаю, понадобится для изменения его конфигурации через XML.

P.S.Наш хост использует II6, но оба решения для IIS6 и IIS7 оценены по достоинству.

Это было полезно?

Решение

Во-первых, можно настроить службы данных в файле веб-конфигурации.Контракт, используемый DataService, называется System.Data.Services.IRequestHandler.

Вот что вы можете сделать в файле веб-конфигурации, чтобы настроить его.

В теге Service элемента system.servicemodel добавьте

<service name="{you service type name including the namespace i.e. myapplication.myservice}">
    <endpoint address="" binding="webHttpBinding" contract="System.Data.Services.IRequestHandler">
    </endpoint>
</service>

Получив это, вы можете начать настраивать все, что угодно, используя стандартные элементы конфигурации WCF.

Во-вторых, чтобы включить или отключить методы аутентификации для конкретной службы в IIS, вы можете сделать следующее:

В оснастке для IIS щелкните правой кнопкой мыши файл службы (т. е.yourservice.svc) и нажмите «Свойства».В свойствах перейдите на вкладку «Безопасность файлов» и нажмите кнопку «Изменить» в групповом поле «Аутентификация и контроль доступа».после этого это похоже на настройку безопасности каталогов в IIS.

В качестве последнего предложения по устранению неполадок важно включить диагностику wcf, пока вы настраиваете ее с использованием конфигурации xml, написанной в WCF. Ведение журнала службы данных согласно wcf богато и очень информативно.

вы можете узнать больше об этом на Администрирование и диагностика WCF

Надеюсь, я смог помочь вам с вашей проблемой

дайте мне знать, как идут дела.

С уважением

Дэниел Портелла

ОБНОВЛЯТЬ:

Привет Шнайдер

Чтобы указать схему аутентификации в XML, читайте ниже.

Для проверки подлинности Windows в качестве примера

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <system.serviceModel>
    <bindings>
      <webHttpBinding>
        <binding name="MyBindingName" >
          <security mode="Transport">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </webHttpBinding>
    </bindings>
    <services>
      <service name="{you service type name including the namespace i.e. myapplication.myservice}">
        <endpoint address="" binding="webHttpBinding" bindingConfiguration="MyBindingName" contract="System.Data.Services.IRequestHandler">
        </endpoint>
      </service>
    </services>
  </system.serviceModel>
</configuration>

Примеры других типов аутентификации можно найти в библиотеке MSDN.

Общие сценарии обеспечения безопасности

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top