Исключение WCF: для этой службы требуется «анонимная» аутентификация, но она не включена для приложения IIS, в котором размещена эта служба.

Я видел, как это спрашивали здесь и везде много раз, но я не могу понять это.

Вот что я хочу сделать. Мне нужно разместить службу WCF в IIS 6. Мне нужна безопасность имени пользователя/пароля, и я не хочу, чтобы они передавались незашифрованными, поэтому я использую HTTPS. У меня все это работает локально на моем IIS, но когда я приступаю к его развертыванию, я получаю ошибку «Анонимный доступ не включен». На моем локальном IIS анонимный доступ включен, на развернутом сервере - нет, и мы не хотим его включать. Проблема понятна. Решение для меня неочевидное....

Если я перехожу на страницу в IE или добавляю ссылку на службу из Visual Studio, я получаю эту ошибку после ввода имени пользователя/пароля. Итак, это показывает, что мой сертификат и HTTPS работают нормально, а имя пользователя и пароль верны. Вот соответствующие настройки из web.config:

<services>
  <service name="SecureWcfTestsApplication.Service1">
    <endpoint address=""
      binding="wsHttpBinding"
      bindingConfiguration ="Binding2"
      contract="SecureWcfTestsApplication.IService1" />
  </service>
</services>

<bindings>
  <basicHttpBinding>
  </basicHttpBinding>
  <wsHttpBinding>
    <binding name="Binding2">
      <security mode="TransportWithMessageCredential">
        <message clientCredentialType="Windows" algorithmSuite="Default" />
      </security>
    </binding>        
  </wsHttpBinding>
</bindings>

Я использую wsHttpBinding, потому что мне не нравится basicHttpBinding с clientCredentialType, установленным на Windows. Сказав, что я бы предпочел использовать basicHttp, но он хочет, чтобы UserName был clientCredentialType, и я не уверен, в чем разница между UserName и безопасностью Windows.

Лучший

Луч


person RBrowning99    schedule 16.03.2012    source источник


Ответы (4)


Исключение, которое вы получаете, является нормальным, если вы не настроили безопасность транспорта с использованием проверки подлинности Windows, http://msdn.microsoft.com/en-us/library/ms733089.aspx

В этом случае необходим тег <transport>, хотя у вас уже есть определенный тег <message>.

person Lex Li    schedule 17.03.2012
comment
Привет. Я добавил это и все еще получаю ту же ошибку. Теперь у меня есть это: ‹bindings› ‹basicHttpBinding› ‹/basicHttpBinding› ‹wsHttpBinding› ‹binding name=Binding2› ‹security mode=TransportWithMessageCredential› ‹message clientCredentialType=Windows algorithmSuite=Default /› ‹transport clientCredentialType=Windows /› ‹/security› ‹/binding› ‹/wsHttpBinding› - person RBrowning99; 20.03.2012
comment
На случай, если кто-то придет к этому позже, я нашел самый простой способ сделать это. services› ‹bindings› ‹basicHttpBinding› ‹binding name=Binding2› ‹security mode=Transport› ‹transport clientCredentialType=Windows /› ‹/security› ‹/binding› ‹/basicHttpBinding› ‹/bindings› - person RBrowning99; 21.03.2012

В диспетчере IIS нажмите на свой сайт. Вы должны быть «в представлении функций» (а не «представлении содержимого»)

В разделе IIS «представление функций» выберите так называемую функцию «аутентификация» и дважды щелкните ее. Здесь вы можете включить аутентификацию Windows. Это также возможно (думаю, в одном из предложений в теме) с помощью настройки в файле web.config (...)

Но, возможно, у вас есть файл web.config, с которым вы не хотите слишком много возиться. Тогда эта тема не слишком поможет, поэтому я добавил этот ответ

person Community    schedule 27.03.2014

Анонимная аутентификация может, а в некоторых случаях должна быть включена для службы, но не для сайта.

Поэтому убедитесь, что для «корневой» аутентификации вашего сайта включена только аутентификация Windows. Затем разверните свой сайт, выберите папку «сервис» и убедитесь, что в вашем сервисе включена Windows и анонимная аутентификация.

По крайней мере, у меня было идентичное сообщение об ошибке с базовым веб-сайтом и службой MSSQL Master Data Services, и это было решением. Я получил ошибку при запуске только службы, но сайт работал почти нормально, MDS Explorer не работал, потому что настройки аутентификации службы сначала были неправильными. Причиной этой ошибки конфигурации может быть ошибка в диспетчере конфигурации MDS при создании нового сайта MDS?

Таким образом, в моем случае проблему нужно было решить не путем специального редактирования файлов web.config или ApplicationHost.config, а просто выбрав правильные параметры аутентификации для веб-сайта и его службы в диспетчере IIS. Я не уверен, что это так, но, может быть, стоит попробовать?

person Atte    schedule 30.01.2013

В особенно тупой момент я также получил эту ошибку:

Исключение WCF: … для этой службы требуется «анонимная» аутентификация, но она не включена для приложения IIS, в котором размещена эта служба

В конце концов я понял, что мой web.config вообще не имеет тега «аутентификации» в «system.web». Неудивительно, что IIS жаловался на проблемы с аутентификацией!

Решить проблему было так же просто, как добавить:

  <system.web>
    <authentication mode="Windows" />

Глупо, я знаю... но я надеюсь, что это поможет!

person Mike Gledhill    schedule 21.10.2013