IIS - 401.3 - nieautoryzowane

96

Próbuję rozpocząć korzystanie z usług IIS. Utworzyłem nową witrynę w Menedżerze IIS, zamapowałem ją na folder w moim systemie plików i dodałem index.html do tego folderu. Ustawiłem port na 85 dla tej witryny. Kiedy próbuję uzyskać dostęp http://localhost:85/index.html, pojawia się następujący komunikat o błędzie:

401.3 - nieautoryzowany - nie masz uprawnień do przeglądania tego katalogu lub strony z powodu konfiguracji listy kontroli dostępu (ACL) lub ustawień szyfrowania dla tego zasobu na serwerze sieci Web.

Dałem dostęp do odczytu wszystkim w folderze i spróbowałem ponownie. Mogłem wtedy uzyskać dostęp do strony.

Następnie porównałem właściwości mojego folderu z właściwościami wwwroot. Okazało się, że wwwroot miał dostęp do odczytu w IIS_IUSRS ... Kiedy zrobiłem to samo w moim folderze i spróbowałem ponownie, ponownie otrzymałem powyższy błąd. Sprawdziłem, czy dostęp anonimowy jest domyślnie włączony, ale nadal pojawia się ten błąd.

Dlaczego to się dzieje? Jaki jest właściwy sposób rozwiązania problemu?

Aadith Ramia
źródło

Odpowiedzi:

176

Od kilku dni zmagam się z tą samą kwestią. Można to rozwiązać, modyfikując właściwości dostępu użytkowników zabezpieczeń do folderu systemu plików, na który mapowana jest witryna. Ale IIS_IUSRS nie jest jedynym kontem, które musisz autoryzować.

  • W konsoli zarządzania usługami IIS, w części dotyczącej uwierzytelniania konfiguracji witryny, zmodyfikuj wiersz „Uwierzytelnianie anonimowe” i sprawdź konto ustawione jako „Określony użytkownik” (moje to IUSR).
  • Przyznaj uprawnienia do odczytu i wykonywania folderu swojej witryny kontu wymienionemu jako określony użytkownik.

LUB

  • W konsoli zarządzania usługami IIS, w części dotyczącej uwierzytelniania konfiguracji witryny, zmodyfikuj wiersz „Uwierzytelnianie anonimowe”, wybierając opcję „Tożsamość puli aplikacji” zamiast „Określony użytkownik”.
groch
źródło
6
Zauważyłem, że uwierzytelnianie anon z „Tożsamością puli aplikacji” działa, ale z jakiegoś powodu nie mogłem go uruchomić z IUSR. Dzięki.
fortboise
5
Logika jest taka, że ​​witryna domyślnie używa uwierzytelniania anonimowego, a IUSR to konto anonimowe. Dlatego IIS korzysta z konta IUSR, aby uzyskać dostęp do systemu plików (fizyczna ścieżka witryny sieci Web), co może nie działać zawsze (ponieważ wiele systemów plików nie akceptuje IUSR). To jest przyczyna błędu 401,3. Zmieniając dostęp do systemu plików (udzielając temu kontu dostępu do plików) lub zmieniając konto anonimowe na tożsamość puli (tożsamość puli znajduje się w IIS_IUSRS, które zwykle mają dostęp do plików), usługi IIS powinny mieć wystarczające uprawnienia dostępu do plików.
Lex Li
62

Oto, co zadziałało dla mnie.

  1. Ustaw tożsamość puli aplikacji na konto, któremu można przypisać uprawnienia do folderu.
  2. Upewnij się, że katalog źródłowy i wszystkie powiązane pliki otrzymały prawa do odczytu plików do konta przypisanego do właściwości tożsamości puli aplikacji
  3. W usługach IIS w węźle głównym serwera ustaw anonimowego użytkownika na dziedziczenie z tożsamości puli aplikacji. (To była część, z którą walczyłem)

Aby ustawić anonimowość serwera na dziedziczenie z tożsamości puli aplikacji, wykonaj następujące czynności.

  • Otwórz Menedżera usług IIS (inetmgr)
  • W lewym panelu wybierz węzeł główny (nazwę hosta serwera)
  • W środkowym panelu otwórz aplet „Uwierzytelnianie”
  • Podświetl „Anonimowe uwierzytelnianie”
  • W panelu po prawej stronie wybierz „Edytuj ...” (powinno zostać otwarte okno dialogowe)
  • wybierz „Tożsamość puli aplikacji”
barrypicker
źródło
9
# 3) NAPRAWIONY MÓJ PROBLEM: W usługach IIS, w węźle głównym serwera, ustaw anonimowego użytkownika na dziedziczenie z tożsamości puli aplikacji. (To była część, z którą się zmagałem)
Ravi Ram
Wiem, że nie wolno ci pisać komentarzy „dziękuję”, ale czuję, że muszę wyrazić swoją wdzięczność. Nie ma mowy, żebym to rozgryzł.
Jonny Cook
@RaviRam: Proszę wyjaśnić kroki, które wykonałeś. Krok po kroku jako początkujący. Co masz na myśli, mówiąc „n IIS, w węźle głównym serwera, ustaw anonimowego użytkownika na dziedziczenie z tożsamości puli aplikacji”. Proszę o pomoc.
Niezniszczalny
@RaviRam - uruchom polecenie "inetmgr.exe", a pojawi się ekran administracyjny IIS. Na tej podstawie wykonaj kroki opisane w mojej odpowiedzi. Prawdopodobnie będziesz musiał uruchomić polecenie jako administrator. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker
Jak wspomniano w innej odpowiedzi, stwierdziłem, że nie musisz zmieniać ustawień anon uwierzytelniania na poziomie głównym - możesz zmienić to ustawienie również na poziomie witryny lub katalogu wirtualnego
jaycer
17

TL; DR;

W większości przypadków wystarczy przyznanie dostępu do następujących kont (jednego | obu):

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

z prawami dostępu :

  1. Przeczytaj i wykonaj
  2. Wyświetl zawartość folderu
  3. Czytać

Otóż ​​to!

Czytaj dalej, aby uzyskać bardziej szczegółowe wyjaśnienie ...


  1. Otwórz IIS i wybierz swoją aplikację .
  2. Po prawej stronie kliknij Uwierzytelnianie .
  3. Wybierz tutaj „ Uwierzytelnianie anonimowe ”.
  4. Pojawi się następujące okno dialogowe.

wprowadź opis obrazu tutaj

Udziel dostępu do listy ACL folderu aplikacji internetowej w zależności od tego, co wybrano na powyższym obrazku:

  • Określony użytkownik : przyznaj dostęp dla obuIUSR(w moim przypadku) +IIS AppPool\DefaultAppPool
  • Tożsamość puli aplikacji : udziel dostępuIIS AppPool\DefaultAppPooltylkodla

IIS AppPool\DefaultAppPool konto jest domyślnym kontem AppPool dla nowych aplikacji internetowych usług IIS, jeśli ustawiłeś konto niestandardowe, użyj konta niestandardowego.


Przyznaj następujące uprawnienia kontom:

  1. Read & Execute
  2. List folder contents
  3. Read

wprowadź opis obrazu tutaj

Legendy
źródło
13

Ponieważ masz do czynienia z treścią statyczną ...

W folderze, który działa jako katalog główny witryny - czy po kliknięciu prawym przyciskiem myszy> właściwości> zabezpieczenia na liście pojawia się pozycja „Użytkownicy”? jeśli nie, kliknij „Dodaj ...” i wpisz, po zakończeniu kliknij „Zastosuj”.

joelmdev
źródło
1

Na wypadek, gdyby ktoś inny wpadł w to. Rozwiązałem wszystkie te kroki i okazuje się, że ponieważ rozpakowałem niektóre pliki z MAC, Microsoft automatycznie bez żadnego powiadomienia Zaszyfrowałem pliki. Po godzinach prób ustawiania uprawnień do folderów wszedłem i zobaczyłem, że nazwy plików są zielone, co oznacza, że ​​pliki zostały zaszyfrowane, a usługi IIS wyrzucą ten sam błąd, nawet jeśli uprawnienia do folderu są prawidłowe.

Kris
źródło
Spędziłem zbyt dużo czasu nad tym samym problemem. Po prostu tutaj, aby współczuć. Skończyło się na tym, że szukałem IIS i dostępu do EFS, ale Twoja odpowiedź wskazała mi główną przyczynę mojego problemu - rozszerzony plik zip z komputera Mac. Mój konkretny scenariusz polegał na tym, że ASP.NET Core hostowany w procesie w usługach IIS nie uruchamiał się - brak komunikatów dziennika zdarzeń, brak dzienników standardowych itp. Dostęp za pośrednictwem hosta lokalnego spowodował komunikat o błędzie, że web.config był nieprawidłowy, ale nie pokazał źródła. Plik był oczywiście dostępny, ale nie można było odczytać zawartości.
Aaron
1
  1. Utwórz nową witrynę, kliknij prawym przyciskiem myszy folder Witryny, a następnie kliknij opcję Dodaj witrynę
  2. Wprowadź nazwę witryny.
  3. Wybierz ścieżkę fizyczną
  4. Wybierz Adres IP
  5. Zmień port
  6. Kliknij OK
  7. Przejdź do puli aplikacji
  8. Wybierz pulę witryn
  9. Kliknij prawym przyciskiem myszy opcję Ustawienia zaawansowane
  10. Zmień wersję .Net CLR na „No Manage Code”
  11. Zmień tożsamość na „ApplicationPoolIdentity”
  12. Przejdź do strony głównej witryny, a następnie kliknij „Uwierzytelnianie”
  13. Kliknij prawym przyciskiem myszy AnonymousAuthentication, a następnie kliknij „Edytuj”
  14. Wybierz tożsamość puli aplikacji
  15. Kliknij OK
  16. Bum!

dla tras dodaj plik web.config

<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="React Routes" stopProcessing="true">
                    <match url=".*" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
                        <add input="{REQUEST_URI}" pattern="^/(api)" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="/" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>
Aevi Rontos
źródło
0

Inny problem, który może się pojawić w związku z otrzymywaniem nieautoryzowanej wiadomości, jest związany z dostawcami używanymi w ustawieniach uwierzytelniania z usług IIS. W moim przypadku miałem ten problem, jeśli ustawię dostawcę uwierzytelniania systemu Windows na „Negotiate”. Po wybraniu opcji „NTLM” dostęp został przyznany.

Więcej informacji na temat dostawców uwierzytelniania

https://docs.microsoft.com/en-us/iis/configuration/system.webserver/security/authentication/windowsauthentication/providers/

nicoTaccari
źródło
0

Włącz następujące elementy w systemie Windows 2012 R2

wprowadź opis obrazu tutaj

user2907940
źródło
0

Jeśli pracujesz z uwierzytelnianiem w puli aplikacji (zamiast IUSR), co powinieneś, to ta lista sprawdzeń autorstwa Jean Sun jest najlepszą, jaką mogłem znaleźć, aby poradzić sobie z błędami 401 w IIS:


Otwórz Menedżera usług IIS, przejdź do witryny internetowej lub folderu aplikacji, w którym witryna jest wdrażana.

  1. Otwórz Ustawienia zaawansowane (znajduje się w panelu Akcje po prawej stronie).
  2. Zanotuj nazwę puli aplikacji, a następnie zamknij to okno
  3. Kliknij dwukrotnie ikonę Uwierzytelnianie, aby otworzyć ustawienia uwierzytelniania
  4. Wyłącz uwierzytelnianie systemu Windows
  5. Kliknij prawym przyciskiem myszy Anonimowe uwierzytelnianie i kliknij Edytuj
  6. Wybierz przycisk opcji Tożsamość puli aplikacji i kliknij przycisk OK
  7. Wybierz węzeł Pule aplikacji z drzewa menedżera IIS po lewej stronie i wybierz nazwę puli aplikacji zanotowaną w kroku 3
  8. Kliknij prawym przyciskiem myszy i wybierz Ustawienia zaawansowane
  9. Rozwiń ustawienia modelu procesu i wybierz ApplicationPoolIdentity z listy rozwijanej „Konto wbudowane”, a następnie kliknij OK.
  10. Kliknij ponownie OK, aby zapisać i zamknąć stronę ustawień zaawansowanych puli aplikacji
  11. Otwórz wiersz poleceń administratora (kliknij prawym przyciskiem myszy ikonę CMD i wybierz opcję „Uruchom jako administrator”. Będzie ona znajdować się gdzieś w menu startowym, prawdopodobnie w sekcji Akcesoria.
  12. Uruchom następujące polecenie:

    icacls <path_to_site> /grant "IIS APPPOOL\<app_pool_name>"(CI)(OI)(M)
    

    Na przykład:

    icacls C:\inetpub\wwwroot\mysite\ /grant "IIS APPPOOL\DEFAULTAPPPOOL":(CI)(OI)(M)
    

Szczególnie kroki 5. i 6. są często pomijane i rzadko wspominane w Internecie.

Jpsy
źródło