WCF + Basic Auth - не прекратит использование анонимной аутентификации - PullRequest
0 голосов
/ 04 октября 2011

Я пытался создать службу WCF, которая использует базовую аутентификацию, и до сих пор я продолжаю выдавать сообщение об ошибке, указывающее, что службе требуется анонимная аутентификация, хотя я думал, что настроил web.config для использования базовой аутентификации.

Я потратил несколько часов, пытаясь найти решение своей проблемы, но не хотел найти решение здесь.Я подозреваю, что это то, что я пропускаю.

Вот что я делаю.Я создал веб-проект, добавил службу wcf, создал другой веб-проект и добавил одну страницу .aspx для тестирования службы.Я не изменил НИЧЕГО в конфигурации службы wcf по умолчанию.Я могу выполнить развертывание в IIS, и если я открою окно браузера и перейду на страницу, служба будет работать нормально, если я включу анонимную аутентификацию.Я также могу использовать тестовую страницу для доступа к службе без каких-либо проблем.

Затем я изменил службу на использование базовой аутентификации (см. Ниже для web.config службы) и перераспределил ее.Я не изменил аутентификацию IIS для использования Basic, поэтому он все еще был настроен на использование анонимной аутентификации.Я обновил браузер и сервис отображается.Тестовая веб-страница все еще имела доступ к службе.

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

Вот веб-сайт моей службы.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />

      <bindings>
        <wsHttpBinding>
          <binding name="basicAuthBinding">
            <security mode="Transport">
              <transport clientCredentialType="Basic" />
            </security>
          </binding>
        </wsHttpBinding>
      </bindings>

      <services>
        <service name="TestService">
          <endpoint address="http://localhost:7000/BA.svc" binding="wsHttpBinding" bindingConfiguration="basicAuthBinding" name="BasicEndpoint" />
        </service>
      </services>
    </system.serviceModel>
</configuration>

Есть идеи, почему это не работает?

1 Ответ

0 голосов
/ 04 октября 2011

Следуя некоторым советам в Как я могу использовать WCF только с привязкой basichttpbinding, SSL и базовой аутентификацией в IIS? , можете ли вы заменить wsHttpBinding на базовуюHttpBinding, установить <serviceMetadata httpsGetEnabled="true" /> и включить SSL на своем IIS?

Или по какой-то причине вы не хотите размещать свой сервис?

...