WCF говорит, что мои настройки требуют анонимной аутентификации - но я не хочу их - PullRequest
0 голосов
/ 21 декабря 2011

Итак этот вопрос имеет точно такие же симптомы моей проблемы.

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

Однако я удалил конечную точку mex из своей веб-конфигурации, и у меня все еще появляется та же ошибка. Мой веб-конфиг выглядит так:

<system.serviceModel>
<services>
  <service name="xxx.MessageHub.MessageHubService"
           behaviorConfiguration="default">
    <endpoint binding="wsHttpBinding"
              contract="xxx.MessageHub.IMessageHubService" />
  </service>
</services>
    <behaviors>
  <endpointBehaviors>
  </endpointBehaviors>
        <serviceBehaviors>
            <behavior name="default">
                <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
                <serviceMetadata httpGetEnabled="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="true"/>
      <serviceAuthorization principalPermissionMode="UseWindowsGroups" />
            </behavior>

        </serviceBehaviors>
    </behaviors>
    <bindings>
        <basicHttpBinding>
            <binding name="credsOnly">
                <security mode="TransportCredentialOnly">
                    <transport clientCredentialType="Windows"></transport>
                </security>
            </binding>
        </basicHttpBinding>
        <wsHttpBinding>
            <binding name="transport">
                <security mode="Transport">
                    <transport clientCredentialType="Windows"></transport>
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
</system.serviceModel>

Я запускаю приложение с добавлением совместимости IIS6 к IIS7 (поскольку наши серверы prod работают под управлением IIS6 - я получаю то же исключение при развертывании на тестовом сервере).

Какие настройки мне нужно исправить, чтобы эта штука работала?

1 Ответ

0 голосов
/ 21 декабря 2011

Мне удалось это исправить, выполнив шаги, описанные в этом сообщении MSDN , слегка измененном:

  1. Щелкните правой кнопкой мыши файл Web.config службы WCF и выберите Изменить конфигурацию WCF .
  2. В редакторе конфигурации в разделе «Конфигурация» выберите папку Bindings .
  3. В разделе Привязки выберите Новая конфигурация привязки .
  4. В диалоговом окне «Создать новую привязку» выберите wsHttpBinding . Нажмите ОК.
  5. Установите Имя конфигурации привязки на некоторое логическое и распознаваемое имя; например, WsHttpEndpointBinding .
  6. Перейдите на вкладку Безопасность .
  7. Установите для атрибута Mode значение Transport , выбрав этот параметр в раскрывающемся меню.
  8. Установите TransportClientCredentialType на Ntlm , выбрав эту опцию в раскрывающемся списке.

  9. В разделе Конфигурация выберите WsHttpEndpoint .
  10. Установите для атрибута BindingConfiguration значение WsHttpEndpointBinding , выбрав этот параметр в раскрывающемся списке. Это связывает настройку конфигурации привязки с привязкой.

  11. В Редакторе конфигурации в меню Файл выберите Сохранить.

И (насколько мне известно) это обеспечивает аутентификацию с использованием встроенной аутентификации (но не интегрированной с Windows).

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