Uwierzytelnianie systemu Windows IIS Express

245

Próbuję użyć IIS Express z VS2010 do obsługi aplikacji Silverlight. Zmodyfikowałem plik applicationhost.config, aby umożliwić modyfikację odpowiednich ustawień konfiguracji. W moim pliku web.config mam następujące elementy:

<location path="">
  <system.webServer>
    <security>
      <authentication>
        <anonymousAuthentication enabled="false" />
        <windowsAuthentication enabled="true" />
      </authentication>
    </security>
  </system.webServer>
</location>

Nie jestem uwierzytelniany, a moje wywołanie usługi domenowej zwraca jako rekord pusty użytkownik. Udało mi się to uruchomić po zainstalowaniu VS2010 SP1 BETA, ale staram się, aby działało to tylko z IIS Express.

Jak włączyć uwierzytelnianie systemu Windows do pracy z IIS Express. Czy brakuje mi ustawienia konfiguracji?

znak
źródło

Odpowiedzi:

276

opcja-1 :

edytuj \My Documents\IISExpress\config\applicationhost.configplik i włącz uwierzytelnianie systemu Windows, tj .:

<system.webServer>
...
  <security>
...
    <authentication>
      <windowsAuthentication enabled="true" />
    </authentication>
...
  </security>
...
</system.webServer>

opcja-2 :

Odblokuj sekcję Uwierzytelnianie systemu Windows w \ My Documents \ IISExpress \ config \ applicationhost.config w następujący sposób

<add name="WindowsAuthenticationModule" lockItem="false" />

Zmień ustawienia zastępowania wymaganych typów uwierzytelniania na „Zezwól”

<sectionGroup name="security">
    ...
    <sectionGroup name="system.webServer">
        ...
        <sectionGroup name="authentication">
            <section name="anonymousAuthentication" overrideModeDefault="Allow" />
            ...
            <section name="windowsAuthentication" overrideModeDefault="Allow" />
    </sectionGroup>
</sectionGroup>

Dodaj następujące w pliku web.config aplikacji

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
      <security>
        <authentication>
          <windowsAuthentication enabled="true" />
        </authentication>
      </security>
    </system.webServer>
</configuration>

Poniższy link może pomóc: http://learn.iis.net/page.aspx/376/delegating-configuration-to-webconfig-files/

Po zainstalowaniu dodatku SP1 dla wersji 2010 2010 może być wymagana opcja 1 + 2, aby uwierzytelnienie systemu Windows działało. Ponadto może być konieczne ustawienie anonimowego uwierzytelnienia na false w applicationhost.config IIS Express:

<authentication>

            <anonymousAuthentication enabled="false" userName="" />

dla VS2015 plik konfiguracyjny hosta aplikacji IIS Express może znajdować się tutaj:

$(solutionDir)\.vs\config\applicationhost.config

a <UseGlobalApplicationHostFile>opcja w pliku projektu wybiera domyślny lub specyficzny dla rozwiązania plik konfiguracyjny.

Vikomall
źródło
Dzięki. Ale wypróbowałem powyższe opcje. Ale nadal nie mogę korzystać z uwierzytelniania systemu Windows. Chyba będę musiał poczekać, aż VS2010 / SP1 uzyska tę funkcjonalność.
Mark
3
opcja druga działała dla mnie. Znalazłem ten post trochę czasu!
TodK
To pytanie nie ma już zastosowania od czasu wydania VS2010 sp1. Próbowałem uruchomić go bez instalowania SP1. Domyślam się, że sp1 robi coś, aby to skonfigurować za pierwszym razem, czego po prostu nie mogłem rozgryźć. Mogę śmiało zaznaczyć tę odpowiedź jako prawidłową, chociaż tak naprawdę nie jest, ponieważ sp1 nie było wymagane.
Mark
1
Dzięki! NTLM działał poprzez wyłączenie anonimowego uwierzytelnienia.
Rob Angelier
4
W VS2015 konfiguracja IIS Express została przeniesiona do struktury rozwiązania, w szczególności $ (SolutionDir) \. Vs \ config \ applicationhost.config niestety nie bierze pod uwagę istniejącej konfiguracji w MyDocuments \ IISExpress, więc wszelkie dostosowania będą musiały zostać odczytane.
Tedford,
401

Visual Studio 2010 SP1 i 2012 dodał obsługę IIS Express, eliminując potrzebę edycji nawiasów kątowych.

  1. Jeśli jeszcze tego nie zrobiłeś, kliknij prawym przyciskiem myszy projekt internetowy i wybierz „Użyj IIS Express ...”.
  2. Po zakończeniu wybierz projekt internetowy i naciśnij, F4aby ustawić panel Właściwości.
  3. Ustaw właściwość „Uwierzytelnianie systemu Windows” na Włączone, a właściwość „Uwierzytelnianie anonimowe” na Wyłączone.

wprowadź opis zdjęcia tutaj

Wierzę, że to rozwiązanie jest lepsze od opcji vikomall.

  • Opcja nr 1 to globalna zmiana dla wszystkich witryn IIS Express.
  • Opcja nr 2 pozostawia cruft programistyczny w pliku web.config.
    • Ponadto prawdopodobnie doprowadzi to do błędu po wdrożeniu w IIS 7.5, chyba że wykonasz procedurę „odblokowania” na applicationHost.config serwera IIS.

Powyższe rozwiązanie oparte na interfejsie użytkownika wykorzystuje elementy lokalizacji specyficzne dla witryny w applicationHost.config IIS Express, pozostawiając aplikację nietkniętą.

Więcej informacji tutaj: http://msdn.microsoft.com/en-us/magazine/hh288080.aspx

roryWoods
źródło
5
Aby podkreślić to, co przeoczyłem - menu kontekstowe i Alt-Enterskrót właściwości nie zastępują całkowicie szczegółów okienka właściwości, które umożliwiają zmianę, czy uwierzytelnianie systemu Windows jest włączone, czy nie. Użyj F4lub kliknij panel właściwości, aby zobaczyć właściwości.
Kaleb Pederson
Zmagałem się z tym zadaniem przez kilka dni, zanim zacząłem od nowa z tym artykułem: msdn.microsoft.com/en-us/library/gg703322%28VS.98%29.aspx Zasadniczo zignoruj ​​wszystko w oryginalnym poście, zacznij od nowa z „ dziewica ”applicationhost.config i po prostu włącz ustawienia zgodnie z tą odpowiedzią. Wreszcie otrzymuję uwierzytelnianie systemu Windows! Dzięki!!
DaveN59,
Kończy to zmianę ustawienia IISExpressWindowsAuthentication z „włączone” na wyłączone ”w .csproj. <IISExpressWindowsAuthentication> wyłączony </IISExpressWindowsAuthentication>
Cameron Taggart
7
Te dwie opcje są dla mnie wyszarzone i wyłączone. Masz pomysł, dlaczego?
szydło
1
2 opcje są wyszarzone, ponieważ masz to w konfiguracji IIS Express <nazwa sekcji = „anonimowe uwierzytelnienie” overrideModeDefault = „Zezwól” /> <nazwa sekcji = „windowsAuthentication” overrideModeDefault = „Zezwól” /> wyjmij overrideModeDefault = „Zezwól "i wydostaną się na zewnątrz
Micah Armantrout
9

Opierając się na odpowiedzi booij boy, sprawdź, czy zaznaczyłeś opcję „uwierzytelniania systemu Windows” w Panelu sterowania -> Programy -> Włącz lub wyłącz funkcje systemu Windows -> Internetowe usługi informacyjne -> Usługi WWW -> Bezpieczeństwo

Wydaje się również, że istnieje duża różnica w korzystaniu z Firefoxa lub Internet Explorera. Po włączeniu „uwierzytelniania systemu Windows” działa dla mnie, ale tylko w IE.

pszczoły73
źródło
5

Oprócz tych wspaniałych odpowiedzi, w kontekście środowiska programistycznego IISExpress oraz w celu wyeliminowania niesławnego błędu „system.web/identity@impersonate”, możesz po prostu upewnić się, że w pliku applicationhost.config znajduje się następujące ustawienie .

<configuration>
    <system.webServer>
        <validation validateIntegratedModeConfiguration="false" />
    </system.webServer>
</configuration>

Zapewni to większą elastyczność podczas programowania i testowania, ale zanim to zrobisz, upewnij się, że rozumiesz implikacje używania tego ustawienia w środowisku produkcyjnym.

Przydatne posty:

Chiramisu
źródło
Wylądowałem na tym całkowicie przez przypadek, ale zadziałało :-)
joshmcode
2

W Menedżerze usług IIS kliknij swoją witrynę. Musisz być „w widoku funkcji” (zamiast „widoku zawartości”)

W sekcji IIS „widoku funkcji” wybierz tak zwaną funkcję „uwierzytelnienia” i kliknij ją. Tutaj możesz włączyć uwierzytelnianie systemu Windows. Jest to również możliwe (myślę, że w jednej z sugestii w wątku) przez ustawienie w pliku web.config (...)

Ale może masz plik web.config, z którym nie chcesz zbyt wiele przeszukiwać. Wtedy ten wątek nie byłby zbyt pomocny, dlatego dodałem tę odpowiedź.


źródło
0

Ta odpowiedź może pomóc, jeśli: 1) Twoja witryna działała z uwierzytelnianiem systemu Windows przed uaktualnieniem do Visual Studio 2015 i 2) i Twoja witryna próbuje się załadować /login.aspx(nawet jeśli nie ma takiego pliku w witrynie).

Dodaj następujące dwa wiersze do appSettingssekcji witrynyWeb.config .

<add key="autoFormsAuthentication" value="false" />
<add key="enableSimpleMembership" value="false"/>
Theophilus
źródło
0

Z tej samej uwagi - VS 2015, .vs \ config \ applicationhost.config nie jest widoczny lub niedostępny.

Domyślnie folder .vs jest ukryty (przynajmniej w moim przypadku).

Jeśli nie możesz znaleźć folderu .vs, wykonaj poniższe czynności.

  1. Kliknij prawym przyciskiem myszy folder Solution
  2. wybierz „Właściwości”
  3. W Attributessekcji kliknij Hiddenpole wyboru (domyślnie niezaznaczone),
  4. następnie kliknij przycisk „Zastosuj”
  5. Pojawi się okno potwierdzenia „Zastosuj zmiany w tym folderze, podfolderze i plikach”, wybierz „Ok”.

    Powtórz kroki od 1 do 5, z step 3tym wyjątkiem , że tym razem potrzebujesz uncheckopcji „Ukryty”, którą wcześniej sprawdziłeś.

Teraz powinien być w stanie zobaczyć folder .vs.

SatheeshN
źródło
0

Po wykonaniu wszystkich powyższych odpowiedzi doszedłem do wniosku, że nie korzystam z programu Visual Studio jako administrator. Po uruchomieniu jako administrator problem został rozwiązany.

Alisson
źródło