Usługa sieci Web ASP.NET w aplikacji do uwierzytelniania formularzy

Mam istniejącą aplikację ASP.NET, która implementuje uwierzytelnianie formularzy w całej witrynie. Aplikacja jest wdrażana w wielu instancjach (np. Customer1, customer2, test, dev, etc ...), z osobną bazą danych na instancję. SSL jest w grze. Konfiguracja instancji odbywa się za pomocą pliku konfiguracyjnego XML.

Mam nowy wymóg zezwalający na przesyłanie / pobieranie niektórych danych, które chciałbym wdrożyć jako publiczną usługę internetową.

Moją początkową myślą było wybiórcze wyłączenie uwierzytelniania formularzy dla podkatalogu aplikacji (np. ~ / Services), a następnie uwierzytelnianie za pomocą nagłówka SOAP lub podobnego.

Nie znajduję jednak sposobu selektywnego wyłączania autoryzacji formularzy.

Pytanie: Czy istnieje sposób, aby to zrobić? Próbowałem tagu <location> w konfiguracji sieci bezskutecznie.

Jeśli nie, jakie są twoje zalecenia, jak to skonfigurować? Mogę wymyślić następujące opcje:

1) Utwórz nowy projekt „Usługi” w moim rozwiązaniu, a następnie skonfiguruj osobną aplikację ASP.NET IIS w tym katalogu w każdej instancji. (Pro: łatwy dostęp do konfiguracji instancji, która może być potrzebna w przyszłości. Con: obciążenie konfiguracji dla każdej odpowiedniej instancji).

2) Utwórz osobne rozwiązanie „Usługi”, które odwołuje się do potrzebnych zespołów z rozwiązania aplikacji i udostępnia je jako oddzielną aplikację ASP.NET. Następnie wyszukaj ciąg połączenia db na podstawie nazwy użytkownika podanej w nagłówku SOAP. (Pro: jedna aplikacja do konfiguracji w IIS. Con: Brak łatwego dostępu do konfiguracji instancji).

3)?

Wyjaśnienie: widziałem tutaj odpowiedź:Zastąp uwierzytelnianie formularzy ASP.NET dla pojedynczej strony, ale użycie znacznika lokalizacji nie pomaga (żądania usługi internetowej są nadal przekierowywane). Odpowiednie sekcje w moim web.config wyglądają tak:

<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>

questionAnswers(3)

yourAnswerToTheQuestion