IIS - 401.3 - Nicht autorisiert

91

Ich versuche, mit der Verwendung von IIS zu beginnen. Ich habe im IIS-Manager eine neue Site erstellt, sie einem Ordner in meinem Dateisystem zugeordnet und dem Ordner index.html hinzugefügt. Ich habe den Port für diese Site auf 85 gesetzt. Wenn ich versuche, darauf zuzugreifen http://localhost:85/index.html, wird die folgende Fehlermeldung angezeigt:

401.3 - nicht autorisiert - Sie haben aufgrund der ACL-Konfiguration (Access Control List) oder der Verschlüsselungseinstellungen für diese Ressource auf dem Webserver keine Berechtigung zum Anzeigen dieses Verzeichnisses oder dieser Seite.

Ich gab allen im Ordner Lesezugriff und versuchte es erneut. Ich könnte dann auf die Seite zugreifen.

Ich habe dann die Eigenschaften meines Ordners mit denen von wwwroot verglichen. Ich habe festgestellt, dass wwwroot Lesezugriff auf IIS_IUSRS hatte ... Als ich dasselbe in meinem Ordner tat und es erneut versuchte, wurde der obige Fehler erneut angezeigt. Ich habe überprüft, ob der anonyme Zugriff standardmäßig aktiviert ist, erhalte jedoch weiterhin diesen Fehler.

Warum passiert das? Was ist der richtige Weg, um das Problem zu lösen?

Aadith Ramia
quelle

Antworten:

166

Ich habe mehrere Tage mit demselben Thema zu kämpfen. Sie können das Problem beheben, indem Sie die Eigenschaften des Sicherheitsbenutzerzugriffs des Dateisystemordners ändern, dem Ihre Site zugeordnet ist. IIS_IUSRS ist jedoch nicht das einzige Konto, das Sie autorisieren müssen.

  • Ändern Sie in der IIS-Verwaltungskonsole im Authentifizierungsteil der Konfiguration Ihrer Site die Zeile "Anonyme Authentifizierung" und überprüfen Sie das als "Bestimmter Benutzer" festgelegte Konto (meins ist IUSR).
  • Geben Sie dem Konto, das als bestimmter Benutzer aufgeführt ist, Lese- und Ausführungsberechtigung für den Ordner Ihrer Site.

ODER

  • Ändern Sie in der IIS-Verwaltungskonsole im Authentifizierungsteil der Konfiguration Ihrer Site die Zeile "Anonyme Authentifizierung", indem Sie "Identität des Anwendungspools" anstelle von "Bestimmter Benutzer" auswählen.
groch
quelle
6
Ich fand die anon-Authentifizierung mit "Application Pool Identity" funktionsfähig, konnte sie jedoch aus irgendeinem Grund nicht mit IUSR ausführen. Vielen Dank.
Fortboise
5
Die Logik dahinter ist, dass die Site standardmäßig eine anonyme Authentifizierung verwendet und IUSR das anonyme Konto ist. Daher verwendet IIS ein IUSR-Konto, um auf das Dateisystem (physischer Pfad der Website) zuzugreifen, das möglicherweise nicht immer funktioniert (da viele Ihrer Dateisysteme IUSR nicht akzeptieren). Das ist die Ursache von 401.3. Durch Ändern des Dateisystemzugriffs (Gewähren des Zugriffs dieses Kontos auf Dateien) oder Ändern des anonymen Kontos in Poolidentität (Poolidentität befindet sich in IIS_IUSRS, die normalerweise Zugriff auf Dateien hat) sollte IIS über ausreichende Berechtigungen für den Zugriff auf die Dateien verfügen.
Lex Li
58

Hier ist, was für mich funktioniert hat.

  1. Legen Sie die App-Pool-Identität auf ein Konto fest, dem Berechtigungen für einen Ordner zugewiesen werden können.
  2. Stellen Sie sicher, dass dem Quellverzeichnis und allen zugehörigen Dateien Leserechte für die Dateien für das Konto erteilt wurden, das der Identitätseigenschaft des App-Pools zugewiesen ist
  3. Legen Sie in IIS am Serverstammknoten fest, dass ein anonymer Benutzer von der Identität des App-Pools erbt. (Dies war der Teil, mit dem ich zu kämpfen hatte)

Gehen Sie wie folgt vor, um den Server anonym zu machen, damit er von der Identität des App-Pools erbt.

  • Öffnen Sie den IIS-Manager (inetmgr).
  • Wählen Sie im linken Bereich den Stammknoten (Server-Hostname) aus.
  • Öffnen Sie im mittleren Bereich das Applet "Authentifizierung"
  • Markieren Sie "Anonyme Authentifizierung".
  • Wählen Sie im rechten Bereich "Bearbeiten ..." (ein Dialogfeld sollte geöffnet werden).
  • Wählen Sie "Anwendungspoolidentität".
Barrypicker
quelle
9
# 3) MEIN PROBLEM BEHOBEN: Stellen Sie in IIS am Serverstammknoten einen anonymen Benutzer so ein, dass er von der Identität des App-Pools erbt. (Dies war der Teil, mit dem ich zu kämpfen hatte)
Ravi Ram
Ich weiß, dass Sie keine "Danke" -Kommentare schreiben sollen, aber ich habe das Gefühl, dass ich meinen Dank aussprechen muss. Ich hätte das auf keinen Fall herausgefunden.
Jonny Cook
@ RaviRam: Bitte erläutern Sie die Schritte, die Sie befolgt haben. Schritt für Schritt als Anfänger. Was meinen Sie mit "n IIS am Serverstammknoten einen anonymen Benutzer so einstellen, dass er von der Identität des App-Pools erbt." Bitte helfen Sie.
Unbreakable
@RaviRam - Führen Sie den Befehl "inetmgr.exe" aus, und der IIS-Verwaltungsbildschirm wird angezeigt. Befolgen Sie daher die in meiner Antwort beschriebenen Schritte. Sie müssen den Befehl wahrscheinlich als Administrator ausführen. msdn.microsoft.com/en-us/library/bb763170.aspx
Barrypicker
Wie in einer anderen Antwort erwähnt, habe ich festgestellt, dass Sie die Einstellungen für die
anon-Authentifizierung
14

TL; DR;

In den meisten Fällen reicht es aus , Zugriff auf die folgenden Konten (eins | beide) zu gewähren :

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

mit Zugriffsrechten :

  1. Lesen & Ausführen
  2. Ordnerinhalt auflisten
  3. Lesen

Das ist es!

Lesen Sie weiter für eine detailliertere Erklärung ...


  1. Öffnen Sie IIS und wählen Sie Ihre Anwendung aus .
  2. Klicken Sie auf der rechten Seite auf Authentifizierung .
  3. Wählen Sie hier " Anonyme Authentifizierung ".
  4. Der folgende Dialog wird angezeigt.

Geben Sie hier die Bildbeschreibung ein

Gewähren Sie Zugriff auf die ACL des Webanwendungsordners, je nachdem, was im obigen Bild ausgewählt ist:

  • Bestimmter Benutzer : Zugriff für beide gewährenIUSR(in meinem Fall) +IIS AppPool\DefaultAppPool
  • Anwendungspoolidentität : Gewähren Sie den ZugriffIIS AppPool\DefaultAppPoolnurfür

IIS AppPool\DefaultAppPool Konto ist das Standard-AppPool-Konto für neue IIS-Webanwendungen. Wenn Sie ein benutzerdefiniertes Konto festgelegt haben, verwenden Sie das benutzerdefinierte Konto.


Geben Sie den Konten die folgenden Berechtigungen:

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

Geben Sie hier die Bildbeschreibung ein

Legenden
quelle
13

Da Sie es mit statischen Inhalten zu tun haben ...

Wird in dem Ordner, der als Stammverzeichnis Ihrer Website fungiert, "Benutzer" in der Liste angezeigt, wenn Sie mit der rechten Maustaste auf> Eigenschaften> Sicherheit klicken? Wenn Sie nicht auf "Hinzufügen ..." klicken und es eingeben, klicken Sie auf "Übernehmen", wenn Sie fertig sind.

joelmdev
quelle
1

Nur für den Fall, dass jemand anderes darauf stößt. Ich habe alle diese Schritte behoben und es stellte sich heraus, dass ich einige Dateien von einem MAC entpackt habe. Microsoft hat die Dateien automatisch ohne Benachrichtigung verschlüsselt. Nachdem ich stundenlang versucht hatte, Ordnerberechtigungen festzulegen, ging ich hinein und sah, dass die Dateinamen grün waren, was bedeutet, dass die Dateien verschlüsselt waren und IIS den gleichen Fehler auslöst, selbst wenn die Ordnerberechtigungen korrekt sind.

Kris
quelle
Verbrachte viel zu viel Zeit mit genau diesem Thema. Einfach hier, um sich zu bemitleiden. Ich bin hier gelandet und habe nach IIS und Zugriff auf EFS gesucht, aber Ihre Antwort hat mich auf die Hauptursache meines Problems hingewiesen - eine erweiterte Zip-Datei von einem Mac. Mein spezielles Szenario war ein Problem, bei dem ASP.NET Core, das in Prozess auf IIS gehostet wurde, nicht gestartet werden konnte - keine Ereignisprotokollnachrichten, keine Standardprotokolle usw. Der Zugriff über localhost gab eine Fehlermeldung aus, dass web.config ungültig war, aber keine Quelle zeigte. Offensichtlich war auf die Datei zugegriffen, aber der Inhalt konnte nicht gelesen werden.
Aaron
1
  1. Erstellen Sie eine neue Site. Klicken Sie mit der rechten Maustaste auf den Ordner Sites und dann auf Site hinzufügen
  2. Geben Sie den Site-Namen ein.
  3. Wählen Sie den physischen Pfad
  4. Wählen Sie IP-Adresse
  5. Port wechseln
  6. OK klicken
  7. Gehen Sie zu Anwendungspools
  8. Wählen Sie den Site-Pool aus
  9. Klicken Sie mit der rechten Maustaste auf Erweiterte Einstellungen
  10. Ändern Sie die .Net CLR-Version in "No Manage Code".
  11. Ändern Sie die Identität in "ApplicationPoolIdentity".
  12. Gehen Sie zur Homepage der Site und klicken Sie auf "Authentifizierung".
  13. Klicken Sie mit der rechten Maustaste auf AnonymousAuthentication und klicken Sie dann auf "Bearbeiten".
  14. Wählen Sie Anwendungspoolidentität
  15. OK klicken
  16. Boom!

Fügen Sie für Routen eine web.config hinzu

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

Ein weiteres Problem, das beim Empfang eines nicht autorisierten Anbieters auftreten kann, betrifft die Anbieter, die in der Authentifizierungseinstellung von IIS verwendet werden. In meinem Fall trat dieses Problem auf, wenn ich den Windows-Authentifizierungsanbieter auf "Verhandeln" stellte. Nachdem ich die Option "NTLM" ausgewählt hatte, wurde der Zugriff gewährt.

Weitere Informationen zu Authentifizierungsanbietern

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

nicoTaccari
quelle
0

Bitte aktivieren Sie die folgenden Elemente in Windows 2012 R2

Geben Sie hier die Bildbeschreibung ein

user2907940
quelle
0

Wenn Sie mit der Anwendungspoolauthentifizierung (anstelle von IUSR) arbeiten, die Sie sollten, ist diese Liste von Überprüfungen durch Jean Sun die beste, die ich finden kann, um 401 Fehler in IIS zu behandeln:


Öffnen Sie den IIS-Manager und navigieren Sie zu Ihrer Website oder Ihrem Anwendungsordner, in dem die Site bereitgestellt wird.

  1. Öffnen Sie die erweiterten Einstellungen (im rechten Bereich Aktionen).
  2. Notieren Sie sich den Namen des Anwendungspools und schließen Sie dieses Fenster
  3. Doppelklicken Sie auf das Authentifizierungssymbol, um die Authentifizierungseinstellungen zu öffnen
  4. Deaktivieren Sie die Windows-Authentifizierung
  5. Klicken Sie mit der rechten Maustaste auf Anonyme Authentifizierung und klicken Sie auf Bearbeiten
  6. Aktivieren Sie das Optionsfeld Anwendungspoolidentität und klicken Sie auf OK
  7. Wählen Sie den Knoten Anwendungspools in der IIS-Manager-Struktur links aus und wählen Sie den Namen des Anwendungspools aus, den Sie in Schritt 3 notiert haben
  8. Klicken Sie mit der rechten Maustaste und wählen Sie Erweiterte Einstellungen
  9. Erweitern Sie die Einstellungen für das Prozessmodell und wählen Sie ApplicationPoolIdentity aus der Dropdown-Liste "Integriertes Konto". Klicken Sie dann auf OK.
  10. Klicken Sie erneut auf OK, um die Seite mit den erweiterten Einstellungen des Anwendungspools zu speichern und zu schließen
  11. Öffnen Sie eine Administrator-Befehlszeile (klicken Sie mit der rechten Maustaste auf das CMD-Symbol und wählen Sie "Als Administrator ausführen". Sie befindet sich irgendwo in Ihrem Startmenü, wahrscheinlich unter "Zubehör".
  12. Führen Sie den folgenden Befehl aus:

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

    Beispielsweise:

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

Insbesondere die Schritte 5. und 6. werden oft übersehen und im Web selten erwähnt.

Jpsy
quelle