IIS - 401.3 - Non autorizzato


92

Sto cercando di iniziare a utilizzare IIS. Ho creato un nuovo sito su IIS Manager, l'ho mappato in una cartella nel mio file system e ho aggiunto index.html alla cartella. Ho impostato la porta su 85 per questo sito. Quando provo ad accedere http://localhost:85/index.html, ricevo il seguente messaggio di errore:

401.3 - non autorizzato: non si dispone dell'autorizzazione per visualizzare questa directory o pagina a causa della configurazione dell'elenco di controllo dell'accesso (ACL) o delle impostazioni di crittografia per questa risorsa sul server Web.

Ho concesso l'accesso in lettura a tutti gli utenti della cartella e ho riprovato. Potrei quindi accedere alla pagina.

Ho quindi confrontato le proprietà della mia cartella con quelle di wwwroot. Ho scoperto che wwwroot aveva accesso in lettura su IIS_IUSRS ... Quando ho fatto lo stesso sulla mia cartella e ho provato di nuovo, ho ricevuto nuovamente l'errore sopra. Ho verificato che l'accesso anonimo sia abilitato per impostazione predefinita, ma ricevo ancora questo errore.

Perché succede questo? Qual è il modo corretto per risolvere il problema?

Risposte:


168

Ho lottato su questo stesso problema per diversi giorni. Può essere risolto modificando le proprietà di accesso utente di sicurezza della cartella del file system su cui è mappato il tuo sito. Ma IIS_IUSRS non è l'unico account che devi autorizzare.

  • Nella console di gestione IIS, nella parte Autenticazione della configurazione del tuo sito, modifica la riga "Autenticazione anonima" e verifica l'account impostato come "Utente specifico" (il mio è IUSR).
  • Concedi l'autorizzazione alla lettura e all'esecuzione sulla cartella del tuo sito all'account indicato come utente specifico.

O

  • Nella console di gestione IIS, nella parte Autenticazione della configurazione del tuo sito, modifica la riga "Autenticazione anonima" selezionando "Identità del pool di applicazioni" invece di "Utente specifico".

6
Ho trovato che l'anon authent con "Application Pool Identity" funziona, ma per qualche motivo non sono riuscito a farlo andare con IUSR. Grazie.
fortboise

5
La logica alla base è che per impostazione predefinita il sito utilizza l'autenticazione anonima e IUSR è l'account anonimo. Quindi IIS utilizza l'account IUSR per accedere al file system (percorso fisico del sito Web) che potrebbe non funzionare sempre (poiché molti file system non accettano IUSR). Questa è la causa di 401,3. Modificando l'accesso al file system (concedendo a tale account l'accesso ai file) o modificando l'account anonimo nell'identità del pool (l'identità del pool è in IIS_IUSRS, che di solito ha accesso ai file), IIS dovrebbe disporre di autorizzazioni sufficienti per accedere ai file.
Lex Li

58

Ecco cosa ha funzionato per me.

  1. Impostare l'identità del pool di app su un account a cui è possibile assegnare autorizzazioni per una cartella.
  2. Assicurati che alla directory di origine ea tutti i file correlati siano stati concessi i diritti di lettura sui file per l'account assegnato alla proprietà dell'identità del pool di app
  3. In IIS, nel nodo radice del server, impostare l'utente anonimo per ereditare dall'identità del pool di app. (Questa era la parte con cui ho lottato)

Per impostare il server anonimo in modo che erediti dall'identità del pool di app, procedi come segue.

  • Apri Gestione IIS (inetmgr)
  • Nel riquadro di sinistra selezionare il nodo radice (nome host del server)
  • Nel riquadro centrale apri l'applet "Autenticazione"
  • Evidenzia "Autenticazione anonima"
  • Nel riquadro di destra seleziona "Modifica ..." (dovrebbe aprirsi una finestra di dialogo)
  • seleziona "Identità pool di applicazioni"

9
# 3) RISOLTO IL MIO PROBLEMA: In IIS, nel nodo radice del server, imposta l'utente anonimo per ereditare dall'identità del pool di app. (Questa era la parte con cui ho lottato)
Ravi Ram

So che non dovresti scrivere commenti "grazie", ma sento di dover esprimere la mia gratitudine. Non c'è modo che l'avrei capito.
Jonny Cook

@ RaviRam: Spiega i passaggi che hai seguito. Passo dopo passo come principiante. Cosa intendi per "n IIS, nel nodo radice del server, imposta l'utente anonimo per ereditare dall'identità del pool di app." Per favore aiutatemi.
Unbreakable

@RaviRam - esegui il comando "inetmgr.exe" e apparirà la schermata di amministrazione di IIS. Da questo, segui i passaggi descritti nella mia risposta. Probabilmente dovrai eseguire il comando come amministratore. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker

Come accennato in un'altra risposta, ho scoperto che non è necessario modificare le impostazioni di autenticazione anonima a livello di root: è possibile modificare anche tale impostazione a livello di sito o di directory virtuale
jaycer

15

TL; DR;

Nella maggior parte dei casi, sarà sufficiente concedere l'accesso ai seguenti account (uno | entrambi):

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

con diritti di accesso :

  1. Leggi ed esegui
  2. Elenca il contenuto della cartella
  3. Leggere

Questo è tutto!

Continua a leggere per una spiegazione più dettagliata ...


  1. Apri IIS e seleziona la tua applicazione .
  2. Sul lato destro fare clic su Autenticazione .
  3. Seleziona " Autenticazione anonima " qui.
  4. Viene visualizzata la seguente finestra di dialogo.

inserisci qui la descrizione dell'immagine

Concedi l'accesso all'ACL della cartella dell'applicazione web a seconda di ciò che è selezionato nell'immagine sopra:

  • Utente specifico : concedi l'accesso per entrambiIUSR(nel mio caso) +IIS AppPool\DefaultAppPool
  • Identità del pool di applicazioni : concedi l'accessoIIS AppPool\DefaultAppPoolsoloper

IIS AppPool\DefaultAppPool account è l'account AppPool predefinito per le nuove applicazioni Web IIS, se è stato impostato un account personalizzato, utilizzare quello personalizzato.


Assegna le seguenti autorizzazioni agli account:

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

inserisci qui la descrizione dell'immagine


13

Dato che hai a che fare con contenuti statici ...

Nella cartella che funge da radice del tuo sito web: se fai clic con il pulsante destro del mouse su> proprietà> sicurezza, "Utenti" viene visualizzato nell'elenco? in caso contrario, fare clic su "Aggiungi ..." e digitarlo, assicurarsi di fare clic su "Applica" quando hai finito.



1

Nel caso in cui qualcun altro si imbatta in questo. Ho risolto tutti questi passaggi e si è scoperto perché ho decompresso alcuni file da un MAC, Microsoft automaticamente senza alcuna notifica Criptato i file. Dopo ore di tentativi di impostare le autorizzazioni per le cartelle, sono entrato e ho visto che i nomi dei file erano verdi, il che significa che i file erano crittografati e IIS genererà lo stesso errore anche se le autorizzazioni delle cartelle sono corrette.


Ho passato troppo tempo su questo stesso identico problema. Semplicemente qui per commiserare. Sono finito qui a cercare IIS e accedere a EFS, ma la tua risposta mi ha fatto capire la causa principale del mio problema: un file zip espanso da un Mac. Il mio particolare scenario era un problema in cui ASP.NET Core ospitato in process su IIS non si avviava: nessun messaggio del registro eventi, nessun registro stdout, ecc. L'accesso tramite localhost ha fornito un messaggio di errore che web.config non era valido ma non mostrava alcuna fonte. Ovviamente il file era accessibile, ma i contenuti non potevano essere letti.
Aaron

1
  1. Crea un nuovo sito, fai clic con il pulsante destro del mouse sulla cartella Siti, quindi fai clic su aggiungi sito
  2. Immettere il nome del sito.
  3. Seleziona percorso fisico
  4. Seleziona indirizzo IP
  5. Cambia porto
  6. Fare clic su OK
  7. Vai a Pool di applicazioni
  8. Seleziona il pool di siti
  9. Fare clic con il pulsante destro del mouse su Impostazioni avanzate
  10. Modifica la versione .Net CLR in "Nessun codice di gestione"
  11. Modifica l'identità in "ApplicationPoolIdentity"
  12. Vai alla home page del sito, quindi fai clic su "Autenticazione"
  13. Fare clic con il pulsante destro del mouse su AnonymousAuthentication quindi fare clic su "Modifica"
  14. Seleziona Identità pool di applicazioni
  15. Fare clic su OK
  16. boom!

per le rotte aggiungi un file 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>

0

Un altro problema che può sorgere relativo alla ricezione di un messaggio non autorizzato è relativo ai provider utilizzati nelle impostazioni di autenticazione da IIS. Nel mio caso ho riscontrato questo problema se ho impostato il provider di autenticazione di Windows come "Negozia". Dopo aver selezionato l'opzione "NTLM" l'accesso è stato concesso.

Ulteriori informazioni sui provider di autenticazione

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



0

Se stai lavorando con l'autenticazione del pool di applicazioni (invece di IUSR), cosa che dovresti fare, allora questo elenco di controlli di Jean Sun è il migliore che ho trovato per gestire gli errori 401 in IIS:


Apri Gestione IIS, vai al tuo sito web o alla cartella dell'applicazione in cui è distribuito il sito.

  1. Apri Impostazioni avanzate (si trova nel riquadro Azioni a destra).
  2. Annotare il nome del pool di applicazioni, quindi chiudere questa finestra
  3. Fare doppio clic sull'icona Autenticazione per aprire le impostazioni di autenticazione
  4. Disabilita l'autenticazione di Windows
  5. Fare clic con il tasto destro su Autenticazione anonima e fare clic su Modifica
  6. Scegliere il pulsante di opzione Identità pool di applicazioni e fare clic su OK
  7. Selezionare il nodo Pool di applicazioni dalla struttura del gestore IIS a sinistra e selezionare il nome del pool di applicazioni annotato nel passaggio 3
  8. Fare clic con il tasto destro e selezionare Impostazioni avanzate
  9. Espandere le impostazioni del modello di processo e scegliere ApplicationPoolIdentity dall'elenco a discesa "Account integrato", quindi fare clic su OK.
  10. Fare di nuovo clic su OK per salvare e chiudere la pagina delle impostazioni avanzate del pool di applicazioni
  11. Apri una riga di comando dell'amministratore (fai clic con il pulsante destro del mouse sull'icona CMD e seleziona "Esegui come amministratore". Sarà da qualche parte nel menu di avvio, probabilmente sotto Accessori.
  12. Esegui il seguente comando:

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

    Per esempio:

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

Soprattutto i passaggi 5. e 6. sono spesso trascurati e raramente menzionati sul web.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.