Веб-служба ASP.NET внутри приложения проверки подлинности с помощью форм - PullRequest
5 голосов
/ 13 июля 2009

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

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

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

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

Вопрос: есть ли способ сделать это? Я пробовал тег в веб-конфигурации, но безрезультатно.

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

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>

Ответы [ 3 ]

4 голосов
/ 13 июля 2009

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

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

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

0 голосов
/ 10 июля 2015

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

<authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
0 голосов
/ 13 июля 2009

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

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