Вопрос по asp.net, web-services, forms-authentication, web-applications – Веб-служба ASP.NET внутри приложения проверки подлинности с помощью форм

5

У меня есть приложение ASP.NET, которое реализует проверку подлинности с помощью форм для всего сайта. Приложение развертывается в нескольких экземплярах (например, customer1, customer2, test, dev и т. Д.) С отдельной базой данных для каждого экземпляра. SSL в игре. Настройка экземпляра осуществляется через файл конфигурации XML.

У меня есть новое требование разрешить загрузку / выгрузку определенных данных, которое я хотел бы реализовать как общедоступный веб-сервис.

Моя первоначальная мысль заключалась в том, чтобы выборочно отключить проверку подлинности с помощью форм для подкаталога приложения (например, ~ / Services), а затем выполнить проверку подлинности через заголовок SOAP или аналогичный.

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

Вопрос: есть ли способ сделать это? Я пробовал & lt; местоположение & gt; тег в веб-конфигурации безрезультатно

Если нет, каковы ваши рекомендации по настройке? Я могу думать о следующих вариантах:

1) Создайте новую «Службу». проект в моем решении, а затем настроить отдельное приложение IIS ASP.NET в этом каталоге в каждом экземпляре. (Pro: легкий доступ к конфигурации экземпляра, который может потребоваться в будущем. Con: нагрузка на конфигурацию для каждого соответствующего экземпляра).

2) Создайте отдельную «Службу». решение, которое ссылается на необходимые сборки из решения приложения и размещает его как отдельное приложение ASP.NET. Затем найдите строку подключения к базе данных на основе имени пользователя, указанного в заголовке SOAP. (Pro: отдельное приложение для настройки в IIS. Con: нет простого доступа к конфигурации экземпляра.)

3) ??

Пояснение: я видел ответ здесь:Переопределить проверку подлинности форм ASP.NET для одной страницы, но использование тега местоположения не помогает (запросы на веб-службу все еще перенаправляются). Соответствующие разделы в моем web.config выглядят так:

<system.web>
  <authentication mode="Forms">
    <forms loginUrl="Login.aspx"/>
  </authentication>
  <authorization>
    <deny users="?"/>
    <allow users="*"/>
  </authorization>
</system.web>

<location path="~/Services/MyService.asmx">
  <system.web>
    <authentication mode="None" />
    <authorization>
      <allow users="*" />
    </authorization>
  </system.web>
</location>
Каждый раз, когда я каждый использовал тег местоположения в файле web.config, путь был в форме «Services / MyService.asmx» не & quot; ~ / Services / MyService.asmx & quot; Вы пытались указать его без тильды? John Downey
Это было это. Могу поклясться, что попробовал 3 разные версии этого. На этот раз я закрыл браузер, и ваше решение сработало отлично. dividius

Ваш Ответ

3   ответа
0

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

<authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
0

Вы также можете иметь (переопределяющий) файл web.config в папке служб с контролем доступа, установленным на анонимный.

4

Я думаю, что будет работать тег местоположения, где вы указываете папку служб и разрешаете всем пользователям что-то вроде:

<location path="services">
      <system.web>
         <authorization>
            <allow users="*"/>
         </authorization>
      </system.web>
</location>

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

Как указано выше, я допустил ошибку, указав & quot; ~ \ Services & quot; для пути, а не просто «Службы» dividius
Рад, что это работает, позор asp.net непоследователен в том, где вы можете использовать ~ / поймал меня в нескольких случаях

Похожие вопросы