IIS - 401.3 - Non autorisé

92

J'essaie de commencer à utiliser IIS. J'ai créé un nouveau site sur IIS Manager, l'ai mappé à un dossier de mon système de fichiers et ajouté index.html au dossier. J'ai mis le port à 85 pour ce site. Lorsque j'essaye d'accéder http://localhost:85/index.html, j'obtiens le message d'erreur suivant:

401.3 - non autorisé - Vous n'êtes pas autorisé à afficher ce répertoire ou cette page en raison de la configuration de la liste de contrôle d'accès (ACL) ou des paramètres de chiffrement de cette ressource sur le serveur Web.

J'ai donné l'accès en lecture à tout le monde sur le dossier et j'ai réessayé. Je pourrais alors accéder à la page.

J'ai ensuite comparé les propriétés de mon dossier avec celles de wwwroot. J'ai trouvé que wwwroot avait un accès en lecture sur IIS_IUSRS ... Quand j'ai fait la même chose sur mon dossier et essayé à nouveau, j'ai à nouveau eu l'erreur ci-dessus. J'ai vérifié que l'accès anonyme est activé par défaut, mais j'obtiens toujours cette erreur.

Pourquoi cela arrive-t-il? Quelle est la bonne façon de résoudre le problème?

Aadith Ramia
la source

Réponses:

168

J'ai lutté sur ce même problème pendant plusieurs jours. Il peut être résolu en modifiant les propriétés d'accès utilisateur de sécurité du dossier du système de fichiers sur lequel votre site est mappé. Mais IIS_IUSRS n'est pas le seul compte que vous devez autoriser.

  • Dans la console de gestion IIS, dans la partie Authentification de la configuration de votre site, modifiez la ligne "Authentification anonyme" et vérifiez le compte défini comme "Utilisateur spécifique" (le mien est IUSR).
  • Donnez l'autorisation de lecture et d'exécution sur le dossier de votre site au compte répertorié comme utilisateur spécifique.

OU

  • Dans la console de gestion IIS, dans la partie Authentification de la configuration de votre site, modifiez la ligne "Authentification anonyme" en sélectionnant "Identité du pool d'applications" au lieu de "Utilisateur spécifique".
groch
la source
6
J'ai trouvé que l'anon authent avec "Application Pool Identity" fonctionnait, mais je ne pouvais pas le faire aller avec IUSR pour une raison quelconque. Merci.
fortboise
5
La logique derrière est que, par défaut, le site utilise l'authentification anonyme et IUSR est le compte anonyme. Ainsi, IIS utilise un compte IUSR pour accéder au système de fichiers (chemin d'accès physique du site Web) qui peut ne pas toujours fonctionner (car beaucoup de vos systèmes de fichiers n'accepteront pas IUSR). C'est la cause de 401.3. En modifiant l'accès au système de fichiers (accordez à ce compte l'accès aux fichiers) ou en changeant le compte anonyme en identité de pool (l'identité du pool est dans IIS_IUSRS, qui ont généralement accès aux fichiers), IIS doit disposer d'autorisations suffisantes pour accéder aux fichiers.
Lex Li
58

Voici ce qui a fonctionné pour moi.

  1. Définissez l'identité du pool d'applications sur un compte auquel des autorisations peuvent être attribuées sur un dossier.
  2. Assurez-vous que le répertoire source et tous les fichiers associés disposent des droits de lecture sur les fichiers du compte attribué à la propriété d'identité du pool d'applications
  3. Dans IIS, au niveau du nœud racine du serveur, définissez l'utilisateur anonyme pour hériter de l'identité du pool d'applications. (C'était la partie avec laquelle j'ai lutté)

Pour définir l'anonymat du serveur afin qu'il hérite de l'identité du pool d'applications, procédez comme suit.

  • Ouvrez IIS Manager (inetmgr)
  • Dans le volet de gauche, sélectionnez le nœud racine (nom d'hôte du serveur)
  • Dans le volet central, ouvrez l'applet 'Authentification'
  • Mettez en surbrillance «Authentification anonyme»
  • Dans le volet de droite, sélectionnez 'Modifier ...' (une boîte de dialogue doit s'ouvrir)
  • sélectionnez 'Identité du pool d'applications'
barrypicker
la source
9
# 3) FIXED MY ISSUE: dans IIS, au niveau du nœud racine du serveur, définissez l'utilisateur anonyme pour qu'il hérite de l'identité du pool d'applications. (C'était la partie avec laquelle j'ai eu du mal)
Ravi Ram
Je sais que vous n'êtes pas censé écrire des commentaires de "remerciement", mais je sens que je dois exprimer ma gratitude. Il n'y a aucun moyen que j'aurais compris cela.
Jonny Cook
@RaviRam: Veuillez expliquer les étapes que vous avez suivies. Étape par étape en tant que débutant. Qu'entendez-vous par "n IIS, au niveau du nœud racine du serveur, définissez l'utilisateur anonyme pour hériter de l'identité du pool d'applications." Veuillez aider.
Incassable
@RaviRam - exécutez la commande "inetmgr.exe" et l'écran d'administration IIS apparaîtra. À partir de là, suivez les étapes décrites dans ma réponse. Vous devrez probablement exécuter la commande en tant qu'administrateur. msdn.microsoft.com/en-us/library/bb763170.aspx
barrypicker
Comme mentionné dans une autre réponse, j'ai trouvé que vous n'avez pas à modifier les paramètres d'authentification anon au niveau de la racine - vous pouvez également modifier ce paramètre au niveau du site ou du répertoire virtuel
jaycer
15

TL, DR;

Dans la plupart des cas, accorder l'accès aux comptes suivants (un | les deux) suffira:

  1. IIS AppPool \ DefaultAppPool
  2. IUSR

avec droits d'accès :

  1. Lire et exécuter
  2. Liste du contenu du dossier
  3. Lis

C'est tout!

Lisez la suite pour une explication plus détaillée ...


  1. Ouvrez IIS et sélectionnez votre application .
  2. Sur le côté droit, cliquez sur Authentification .
  3. Sélectionnez " Authentification anonyme " ici.
  4. La boîte de dialogue suivante apparaît.

entrez la description de l'image ici

Accordez l'accès à l'ACL du dossier de l'application Web en fonction de ce qui est sélectionné dans l'image ci-dessus:

  • Utilisateur spécifique : accorder l'accès aux deuxIUSR(dans mon cas) +IIS AppPool\DefaultAppPool
  • Identité du pool d'applications : accorder l'accèsIIS AppPool\DefaultAppPooluniquement

IIS AppPool\DefaultAppPool account est le compte AppPool par défaut pour les nouvelles applications Web IIS, si vous avez défini un compte personnalisé, utilisez le compte personnalisé.


Donnez les autorisations suivantes au (x) compte (s):

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

entrez la description de l'image ici

Légendes
la source
13

Puisque vous avez affaire à du contenu statique ...

Sur le dossier qui agit comme la racine de votre site Web - si vous faites un clic droit> propriétés> sécurité, "Utilisateurs" apparaît-il dans la liste? sinon cliquez sur "Ajouter ..." et tapez-le, assurez-vous de cliquer sur "Appliquer" lorsque vous avez terminé.

joelmdev
la source
1

Juste au cas où quelqu'un d'autre se heurterait à ça. J'ai résolu toutes ces étapes et il s'avère que parce que j'ai décompressé certains fichiers à partir d'un MAC, Microsoft automatiquement sans aucune notification a crypté les fichiers. Après des heures à essayer de définir les autorisations de dossier, je suis entré et j'ai vu que les noms de fichiers étaient verts, ce qui signifie que les fichiers étaient cryptés et IIS lancera la même erreur même si les autorisations de dossier sont correctes.

Kris
la source
J'ai passé beaucoup trop de temps sur ce même problème. Simplement ici pour compatir. J'ai fini par chercher IIS et accéder à EFS, mais votre réponse m'a permis de comprendre la cause première de mon problème - un fichier zip développé à partir d'un Mac. Mon scénario particulier était un problème où ASP.NET Core hébergé en cours sur IIS ne se lancait pas - pas de messages de journal des événements, pas de journaux stdout, etc. L'accès via localhost a donné un message d'erreur indiquant que web.config n'était pas valide mais ne montrait aucune source. Évidemment, le fichier était accessible, mais le contenu ne pouvait pas être lu.
Aaron
1
  1. Créez un nouveau site, faites un clic droit sur le dossier Sites puis cliquez sur Ajouter un site
  2. Saisissez le nom du site.
  3. Sélectionnez le chemin physique
  4. Sélectionnez l'adresse IP
  5. Changer de port
  6. Cliquez sur OK
  7. Accéder aux pools d'applications
  8. Sélectionnez le pool de sites
  9. Cliquez avec le bouton droit sur le clic Paramètres avancés
  10. Remplacez la version .Net CLR par "No Manage Code"
  11. Changez l'identité en "ApplicationPoolIdentity"
  12. Allez sur la page d'accueil du site puis cliquez sur "Authentification"
  13. Cliquez avec le bouton droit sur AnonymousAuthentication puis cliquez sur "Modifier"
  14. Sélectionnez l'identité du pool d'applications
  15. Cliquez sur OK
  16. boom!

pour les itinéraires, ajoutez un 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
la source
0

Un autre problème qui peut survenir lié à la réception d'un non autorisé est lié aux fournisseurs utilisés dans le paramètre d'authentification d'IIS. Dans mon cas, j'ai rencontré ce problème si j'ai défini le fournisseur d'authentification Windows sur "Négocier". Après avoir sélectionné l'option "NTLM", l'accès a été accordé.

Plus d'informations sur les fournisseurs d'authentification

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

nicoTaccari
la source
0

Veuillez activer les éléments suivants dans Windows 2012 R2

entrez la description de l'image ici

user2907940
la source
0

Si vous travaillez avec l'authentification du pool d'applications (au lieu de l'IUSR), ce que vous devriez, alors cette liste de vérifications de Jean Sun est la meilleure que j'ai pu trouver pour traiter les erreurs 401 dans IIS:


Ouvrez IIS Manager, accédez à votre site Web ou au dossier d'application sur lequel le site est déployé.

  1. Ouvrez les paramètres avancés (c'est sur le volet Actions de droite).
  2. Notez le nom du pool d'applications puis fermez cette fenêtre
  3. Double-cliquez sur l'icône d'authentification pour ouvrir les paramètres d'authentification
  4. Désactiver l'authentification Windows
  5. Faites un clic droit sur Authentification anonyme et cliquez sur Modifier
  6. Choisissez le bouton radio Identité du pool d'applications, puis cliquez sur OK
  7. Sélectionnez le nœud Pools d'applications dans l'arborescence du gestionnaire IIS à gauche et sélectionnez le nom du pool d'applications que vous avez noté à l'étape 3
  8. Faites un clic droit et sélectionnez Paramètres avancés
  9. Développez les paramètres du modèle de processus et choisissez ApplicationPoolIdentity dans la liste déroulante «Compte intégré», puis cliquez sur OK.
  10. Cliquez à nouveau sur OK pour enregistrer et fermer la page des paramètres avancés du pool d'applications
  11. Ouvrez une ligne de commande administrateur (faites un clic droit sur l'icône CMD et sélectionnez "Exécuter en tant qu'administrateur". Ce sera quelque part dans votre menu de démarrage, probablement sous Accessoires.
  12. Exécutez la commande suivante:

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

    Par exemple:

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

En particulier, les étapes 5 et 6 sont souvent négligées et rarement mentionnées sur le Web.

Jpsy
la source