Le plus étrange des comportements D'authentification IIS Windows

j'ai un ASP.NET site web tournant sur Windows Server R2 dans un réseau d'entreprise, en utilisant L'authentification Windows.

  • le pool d'applications du site utilise un compte de domaine et en mode pipeline intégré.
  • L'authentification est définie Authentification Windows, tous les autres modes d'authentification sont désactivés.

Toutefois, cela ne fonctionne pas. Chaque fois que j'accède au site web, il apparaît un dialogue demandant le nom d'utilisateur et le mot de passe. - Je entrer dans le correctement nom d'utilisateur de domaine et mot de passe, mais il ne continue pas--les fenêtres apparaissent à nouveau. Après trois fois, il échoue et affiche une page blanche. J'ai essayé avec de nombreux navigateurs différents, mais tous échouent. J'ai demandé à des collègues d'essayer et ils ont tous échoué aussi.

Je ne comprends pas pourquoi cette erreur se produit et j'ai essayé de nombreuses façons de la corriger sans succès. Je pense que c'est très étrange. Cependant, j'ai enfin trouvé un moyen de résoudre ce problème, c'est le plus étrange partie de la problème: j'édite le "chemin physique" dans les "paramètres de base" du site web, Je le montre juste à un autre site web sain, par exemple, %SystemDrive%inetpubwwwroot, puis j'essaie de parcourir le site web, très bon, il fonctionne bien et affiche la page par défaut (iisstart.htm). Il semble que ce n'est pas très utile, mais ensuite je change le chemin physique de retour vers mon site web; tout va soudainement bien -- l'authentification windows fonctionne! Je ne sais pas pourquoi il aide, mais je suis heureux avec ce résultat -- il répare mon problème bien que je ne sais pas ce qui se passe diable.

L'heureux temps est toujours court, quelques jours plus tard, le serveur eu quelques patchs et redémarré, le site ne peut pas fonctionner de nouveau. Et encore une fois, je peux résoudre le problème en utilisant le truc ci-dessus.

je n'aime pas cela! Je n'aime pas faire ce stupide truc à chaque fois que IIS redémarre ou que le serveur redémarre.

y a-t-il quelqu'un qui a quelques idées sur les raisons pour lesquelles l'authentification windows échoue, et pourquoi les trick peut le réparer, et pourquoi après un IIS réinitialiser il échoue à nouveau?

20
demandé sur ErikE 2010-06-29 15:41:08

8 réponses

tout d'abord, merci d'avoir créé ce post. J'ai exactement le même problème et je ne pouvais pas trouver quelqu'un d'autre sans poster les corrections évidentes qui n'étaient d'aucune utilité pour moi. J'avais travaillé sur ce projet pendant près de deux semaines

pour aider la prochaine pauvre âme qui rencontre ce problème et post, j'espère que mes tidbits supplémentaires aident.

Votre solution initiale n'a pas résolu mon problème dans mon cas, mais il ne se révéler qu'il était page d'erreur personnalisée liés. Après avoir collé votre code en Web.config mon problème a empiré et je n'ai pas été en mesure de déboguer ou de lancer la page (avait 500 Erreur de serveur interne lié à web.config)

mais finalement ce que j'ai fait c'est aller dans la Console IIS et supprimer toutes mes pages d'erreur personnalisées. Il n'a toujours pas de travail, comme l'avait espéré. Mais, j'ai aussi trouvé des entrées pour ASP.NET ".NET Custom Errors" dans la partie supérieure de la console du site (et la balise "custom errors" dans web.config). J'avais de vieilles entrées là-dedans et je les ai enlevées via la console, et Mon site est redevenu normal avec L'authentification Windows.

j'ai depuis recréé les erreurs personnalisées de L'IIS et je suis toujours opérationnel comme prévu.

donc à toute autre personne qui pourrait avoir ce problème, vérifiez les deux ASP.NET erreurs personnalisées et IIS paramètres D'Erreurs Personnalisés. Peut-être qu'il y a un conflit, Je ne sais pas, mais dans mon cas ayant seulement les pages IIS mis en place (pour l'instant: -))

11
répondu Steve Fink 2012-10-17 18:42:33

je viens de trouver qu'il semble causé par des pages d'erreur custome 401 sous "pages D'erreur". Je l'ai défini pour exécuter une URL lorsque le code d'état est 401 dans mon web.config, ça ressemble:

 <httpErrors errorMode="Custom">
 <remove statusCode="401" subStatusCode="-1"/>
    <error statusCode="401" path="/Error/AccessDenied" responseMode="ExecuteURL"/>
 </httpErrors>

puis chaque fois que je réinitialise IIS et essayer d'accéder à ce site web, le problème apparaît. Si je le supprimer dans le Web.Config ou supprimer de la console IIS, le problème disparaît, ce qui est le plus drôle, c'est une autre expérience: après que j'ai supprimé ce paramètres et ont été couronnés de succès de l'ouverture du site, j'ai ajouté ce l'établissement de. Tout fonctionne très bien. Chaque utilisateur de domaine peut accéder à ce site web, ceux qui ont échoué passer l'autorisation obtenir la page d'erreur du client.

donc ma solution maintenant est que j'ai enlevé ce paramètre dans mon Web.Config, chaque fois que je réinitialise IIS ou redémarre le serveur, l'administrateur du serveur doit d'abord aller sur le site web, puis ajouter cette page d'erreur client dans IIS console.

je sens que c'est un bug de II7.5 sur Windows Server 2008 R2.

6
répondu user378895 2010-07-01 08:12:21

j'ai aussi été aux prises avec ce problème toute ma journée. J'utilise l'authentification windows et le réglage D'erreur personnalisé dans le web.config pour 401 erreurs. Après que j'ai réinitialisé L'IIS, le site web arrêter d'accepter les utilisateurs de domaine et Windows authentification pop up réapparaître encore et encore.

j'ai ajouté remove tag dans le web.fichier de configuration avec le code D'état secondaire.

<httpErrors>
          <remove statusCode="401" subStatusCode="-1" />
          <remove statusCode="401" subStatusCode="1" />
            <error statusCode="401" subStatusCode="-1" path="/Custom401.aspx" responseMode="ExecuteURL" />          
            <error statusCode="401" subStatusCode="1" path="/Custom401_1.aspx" responseMode="ExecuteURL" />
        </httpErrors>

auparavant, l'étiquette remove n'était présente que pour le code de sous-état -1, mais elle était manquante pour le code de sous-état "1" . Après j'ai ajouté elle, tout a commencé à woking correctement.

dans le post ci-dessus, le code de sous-état est manquant pour l'étiquette d'erreur, qui pourrait être la cause du problème. Il devrait y avoir une balise Supprimer pour toutes les erreurs 401.

6
répondu Gaurav Kumar 2012-02-17 15:35:16

je viens de passer quelques heures à chercher une solution à ce problème.

Pourquoi IE ne pourtant, les autres navigateurs à réussir: les IE essaie D'utiliser L'authentification Kerberos et les autres navigateurs n'essaient pas. Les autres utilisent NTLM.

Solution: dans la situation décrite dans la question, un compte de domaine était utilisé dans le bassin D'applications. Solution Simple: passez au compte" SERVICE réseau". Solution plus complexe: vous devez enregistrer un nom principal de service (NPS). Lisez cet article (ignorez le fait qu'il parle de IIS 6 parce qu'il fonctionne aussi bien sur IIS 7 et 7.5) -Vous recevez une "Erreur HTTP 401.1 - non autorisé: Accès refusé en raison d'informations d'identification non valides" message d'erreur lorsque vous essayez d'accéder à un site Web.

j'espère que cela aidera. Ça m'a donné mal à la tête jusqu'à ce que je tombe sur cet article. (Merci à Paul Lynch qui a posté le lien échec de L'authentification Windows IE8 mais pas Firefox)

3
répondu grahamesd 2013-02-01 18:01:54

j'ai eu ce même problème sur mon serveur Windows 2008 R2. Je n'avais pas de page d'erreur 401 personnalisée. J'ai utilisé des noms de serveurs aliasés (via des enregistrements CNAME DNS et des entrées en-tête host sur les liaisons IIS). J'ai enregistré les SPN pour Kerberos comme suggéré, mais cela n'a pas résolu le problème. Je l'ai résolu en désactivant "L'authentification en mode noyau" (cliquez sur le serveur dans l'arborescence IIS - > double-cliquez sur Authentification sous le groupe IIS - > cliquez sur Authentification Windows - > cliquez sur Avancé Paramètres sur le volet D'action - > décochez la case à cocher - > cliquez sur OK - > Lancez iisreset). Les informations sur cette boîte de dialogue recommandent de ne pas désactiver L'authentification en mode noyau lors de l'utilisation de comptes de service non standard pour l'identité du pool d'applications, mais cela ne s'appliquait pas à nous puisque nous utilisons L'identité Standard D'ApplicationPoolIdentity.

1
répondu Paul 2013-07-22 21:56:32

Ajouter "NT Service\trustedInstaller" dossier physique du site. L'emplacement pour cet utilisateur est le nom de la machine locale.

0
répondu VRREDDY 2012-11-26 12:48:03

le protocole NTLM utilisé pour l'authentification intégrée de Windows nécessite un processus en deux étapes pour authentifier les clients. Le problème mentionné dans la section "Symptômes" se produit lorsque les conditions suivantes sont remplies:

  • le pool d'applications recycle après la première étape du processus D'authentification intégré de Windows.
  • cependant, le pool d'applications recycle avant la deuxième étape de L'authentification intégrée de Windows processus.

Pour contourner ce problème et de réduire la fréquence de ces messages d'erreur, configurer le pool d'applications pour recycler moins fréquemment. Pour configurer le recyclage du pool d'applications, suivez les étapes suivantes:

  1. Cliquez sur Démarrer, cliquez sur Exécuter, tapez inetmgr, puis cliquez sur OK.
  2. développez le nom de l'ordinateur sur lequel vous voulez configurer le recyclage du pool d'applications, puis développez le pool d'applications.
  3. cliquez sur le bouton droit de la souris application pool que vous voulez configurer, puis cliquez sur Propriétés.
  4. dans L'onglet Recycle, configurez l'un des paramètres de façon à ce que IIS recycle moins fréquemment.

Note IIS 6 pools d'applications de soutien de plusieurs paramètres. Ces mesures comprennent le temps écoulé, le nombre de demandes et le délai prévu à recycler un pool d'applications. Si un pool d'applications a une métrique qui fait que le pool d'applications recycle fréquemment, vous rencontrerez ce problème de plus en plus fréquemment.

  1. cliquez sur OK.

[copié de https://support.microsoft.com/en-us/kb/902160 pour la postérité ]

0
répondu Shiroy 2015-05-18 19:59:54

j'ai eu le même problème.. Turnes, je ne devrait pas avoir foiré avec mon hostfile.. J'ai changé mon fichier d'hôte et j'ai pointé une adresse fantaisiste vers ma machine comme ceci:

www.givemeyourcredentials.com    127.0.0.1

j'ai ajouté une reliure au site "www.givemeyourcredentials.com". J'ai tapé les adresses dans ma barre d'adresse et le site m'a demandé mes références comme prévu.. J'ai tapé mes lettres de créance et on m'a demandé à nouveau mes lettres de créance.. Et encore et encore et encore..

Il S'avère: liez votre site web http://localhost lors de l'utilisation de l'authentification windows sur un site IIS. cela a fait l'affaire pour moi.

Espérons que cela aide quelqu'un...

0
répondu Clark Kent 2018-01-12 10:22:38