WCF и проверка подлинности Windows не работает - PullRequest
0 голосов
/ 11 июля 2011

Я не могу получить подтверждение WCF для Windows, аутентифицируясь

Если разрешить анонимно, все работает, ошибок нет.

Я использую .Net 3.5 на Windows 2008 r2 стандарт SP1 IIS 7.5, если это имеет значение VS 2010

Я использовал редактор конфигурации службы WCF, чтобы попытаться проверить, что я делаю, но все равно не повезло

Я получаю ошибку после приличного ожидания 20-30 секунд

Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service. 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: System.NotSupportedException: Security settings for this service require 'Anonymous' Authentication but it is not enabled for the IIS application that hosts this service.

мой web.config

  <system.serviceModel>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

    <bindings>
      <basicHttpBinding>
        <binding name="AmjBasicHttpEndpointBinding">
          <security mode="None">
            <transport clientCredentialType="Windows" />
          </security>
        </binding>
      </basicHttpBinding>

    </bindings>
    <behaviors>
      <serviceBehaviors>
        <behavior name="SMS.Services.BEIMBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="SMS.Services.BEIMBehavior" name="SMS.Services.BEIM">
        <endpoint address="" binding="basicHttpBinding" bindingConfiguration="AmjBasicHttpEndpointBinding"
          name="BeimServices" contract="SMS.Services.IBEIM">
          <identity>
            <dns value="localhost" />
          </identity>
        </endpoint>
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>

  </system.serviceModel>

EDIT сообщение об ошибке находится на веб-странице. http://Servername/Directory/pageName.svc

Ответы [ 4 ]

2 голосов
/ 11 июля 2011

Что ж, получается:

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

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

1 голос
/ 11 июля 2011

Безопасность транспорта WCF для конечных точек HTTP, размещенных в IIS, требует, чтобы на вашем хостинге применялась та же настройка безопасности.Перейдите в диспетчер IIS и настройте аутентификацию для вашего хост-приложения на аутентификацию Windows и отключите другие режимы аутентификации.

Также как @Kieren указал в комментарии, вы установили режим безопасности на None.Итак, вы говорите своим услугам, что вам не нужна безопасность.Вы должны изменить его на Transport, но для него также потребуется HTTPS вместо конечной точки HTTP.Если вы настаиваете на HTTP и довольны передачей токена безопасности по небезопасному каналу, вы должны изменить его на TransportCredentialOnly.

0 голосов
/ 05 ноября 2012

Я разместил WCF в IIS7 на своем ноутбуке с Win7.WCF использовал SSL и только базовую аутентификацию, и все работало.Я точно так же перенес wcf в IIS7 на другой машине с Win server 2008 R2 и получил ту же ошибку, что и пост здесьSoluton должен был прокомментировать конечную точку mex, и теперь все работает.Спасибо всем.

0 голосов
/ 11 июля 2011

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

...