La réception de l'invite de connexion utilisant l'authentification windows intégrée
j'ai une application .NET 3.5 tournant sous IIS 7 sur le serveur Windows 2003 et ne peut pas obtenir l'authentification intégrée de windows fonctionnant correctement comme je continue à être invité pour une connexion. J'ai configuré L'authentification Windows pour l'activer dans IIS avec tous les autres types de sécurité désactivés et mon application web.l'Authentification/autorisation du fichier de configuration est configurée comme suit:
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
<authenticationmode="Windows"/>
<authorization>
<deny users = "?" />
</authorization>
</system.web>
avec cette configuration, Je m'attends derrière la scène de vérification de L'utilisateur Windows pour permettre accéder aux utilisateurs anonymes et les refuser. Cependant, ce que je reçois est un pop-up de connexion Windows lorsque j'essaie d'accéder au site.
Cela fait maintenant quelques jours que je résous ce problème et je ne peux pas le résoudre. Basé sur les messages avec des problèmes similaires, j'ai confirmé mon URL ne comprend pas de périodes, Vérifié deux fois que mes paramètres IE sont définis pour permettre L'authentification intégrée de Windows, et a également ajouté mon URL à mes sites intranet, mais toujours obtenir le pop-up.
pour le dépanner davantage, j'ai activé L'authentification anonyme dans IIS et modifié mon web.fichier de configuration auquel me permet d'entrer et d'ajouter la réponse.Ecrire (Système.Sécurité.Principal.WindowsIdentifity.getcurrent ().utilisateur.nom.toString ()) pour essayer de voir quel utilisateur est utilisé dans l'authentification. Le résultat que je reçois est IIS APPPOOLmyapp qui est évidemment la piscine d'application IIS pour ma demande.
j'apprécie vraiment toute aide que n'importe qui peut fournir de sorte que je suis toujours en utilisant seulement l'authentification windows mais ne pas obtenir la pop-up et l'authentification windows est effectuée contre L'utilisateur Windows réel.
Merci.
note supplémentaire après dépannage:
juste remarqué que lorsque le login échoue et L'invite de connexion de Windows s'affiche à nouveau, il affiche le nom d'utilisateur qui a tenté de se connecter comme "SERVERNAME""nom D'utilisateur" qui m'a conduit à je crois qu'il essayait de valider l'utilisateur par rapport au serveur et au domaine. Pour confirmer cela, j'ai créé un compte d'utilisateur local directement sur le serveur d'application avec le même nom d'utilisateur et mot de passe que l'utilisateur du domaine réseau et j'ai essayé de me connecter à nouveau. Le résultat est que j'ai reçu l'invite de connexion à nouveau mais lorsque j'ai entré le nom d'utilisateur et le mot de passe cette fois, j'ai pu me connecter avec succès. L'utilisateur réseau et le serveur d'applications sont sur le même domaine donc vraiment pas sûr pourquoi l'authentification IIS pointe vers les comptes du serveur d'applications local et non les comptes de domaine. I realize this is an IIS question at this point so posted on forums.iis.net aussi bien, mais appréciez tous les conseils n'importe qui peut avoir depuis ont été dépannage ceci pendant des jours.
21 réponses
j'ai un serveur Windows 2008 sur lequel je travaille, donc ma réponse n'est pas complètement la même que ce que L'OP a sur un serveur Windows 2003.
voici ce que j'ai fait (enregistrer ceci ici pour que je puisse le trouver plus tard).
j'avais la même question:
dans mon Web.config fichier, j'avais cette section:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
</system.web>
en Vertu de IIS, tout cela semble être résolu sous l'icône authentification .
- Edit Permissions: Make sure your ASP.NET le compte a la permission. Le mien n'a pas été ajouté.
vont maintenant dans les caractéristiques de authentification :
Enable Authentification Anonyme avec la IUSR
:
activer authentification Windows , puis clic droit pour définir le fournisseurs .
NTLM doit être le PREMIER!
Ensuite, vérifiez que sous avancé Paramètre... la protection étendue est Accepter et activer l'authentification en mode noyau est cochée:
une fois que j'ai fait cela, je suis retourné à mon application web, j'ai cliqué sur le lien de navigation, et je me suis connecté sans avoir à fournir mes références à nouveau.
j'espère que cela s'avère bénéfique pour beaucoup d'entre vous, et je j'espère que c'est utile pour moi plus tard.
juste pour le bien des autres. Si l'erreur est une 401.1 Unauthorized
et que votre code d'erreur correspond à 0xc000006d
, alors vous rencontrez en fait une "fonctionnalité" de sécurité qui bloque les requêtes vers les en-têtes FQDN ou custom host qui ne correspondent pas au nom de votre machine locale:
suivre cet article support pour corriger le problème:
http://support.microsoft.com/kb/896861
celui-ci m'a pris un moment parce que tous les autres commentaires ici pas réussi à m'aider. J'ai trouvé cet article et il a fixé!
j'ai eu un problème similaire où je voulais protéger seulement une certaine partie de mon site web. Tout a bien fonctionné sauf en IE. J'ai activé L'authentification anonyme et Windows. Pour Anonymous, L'identité est définie à l'identité du Pool D'applications. Le problème était avec l'Authentification Windows. Après quelques recherches autour de moi j'ai allumé fiddler et j'ai trouvé qu'il utilisait Kerberos comme fournisseur (en fait il est réglé pour négocier par défaut). Je l'ai commuté en NTLM et j'ai réparé il. HTH
Daudi
ajouter permission [utilisateurs du domaine] à votre sécurité web.
- clic droit sur votre site dans IIS sous le dossier Sites
- Cliquez Sur Modifier Les Permissions...
- sélectionnez l'onglet Sécurité
- sous la section Groupes ou noms d'utilisateurs, cliquez sur le bouton Modifier... bouton
- dans les Permissions pop up, sous le groupe ou les noms d'utilisateur cliquez Ajouter...
- Entrez [Utilisateurs du Domaine] les noms d'objets pour sélectionner la zone de texte et cliquez sur OK pour appliquer la modification
- cliquez sur OK pour fermer les Permissions pop up
- cliquez sur OK pour fermer les propriétés pop up et appliquer vos nouveaux paramètres""
ne créez pas d'erreurs sur votre serveur en changeant tout. Si vous avez Windows invite à se connecter lorsque vous utilisez L'authentification Windows sur 2008 R2, il suffit de passer à Providers
et déplacer NTLM
pour chaque votre application.
Lorsque Negotiate
est le premier dans la liste, L'authentification Windows peut s'arrêter pour travailler la propriété pour l'application spécifique sur 2008 R2 et vous pouvez être invité à entrer le nom d'utilisateur et le mot de passe que ne fonctionne jamais. Qui arrive lorsque vous faites une mise à jour de votre application. Juste être sûr que NTLM
est le premier sur la liste et vous ne verrez jamais ce problème.
ça m'a arrangé ça.
mon serveur et Pc Client est Windows 7 et sont dans le même domaine
-
in iis7.5-activez l'authentification windows pour votre Intranet (désactivez toute autre authentification.. de plus, il n'est pas nécessaire de mentionner l'authentification windows dans web.fichier de configuration
-
puis allez à L'ordinateur Client .. IE8 ou 9-Outils-Options internet-Sécurité-Intranet Local-Sites-avancé-ajouter votre site (enlever le verfi " require server..."ticketmark..pas besoin de
-
IE8 ou 9 - Outils-Options internet-Sécurité-Intranet Local-personnaliser le niveau-userauthentication-connexion-sélectionnez connexion automatique avec le nom d'utilisateur et le mot de passe
-
sauvegarder ces paramètres..vous êtes fait.. Plus de sollicitation pour le nom d'utilisateur et le mot de passe.
-
assurez-vous, puisque votre pc client fait partie de domaine, vous devez avoir un GPO pour ces paramètres,.. orelse ce paramètre reviendra lorsque l'utilisateur se connecte à windows la prochaine fois
peut être relié au navigateur. Si vous utilisez IE, vous pouvez aller dans Paramètres avancés et vérifier que la case "Activer L'authentification intégrée Windows" est cochée.
si votre URL comporte des points dans le nom de domaine, IE le traitera comme s'il s'agissait d'une adresse internet et non d'une adresse locale. Vous avez au moins deux options:
- Obtenir un alias à utiliser dans l'URL pour remplacer serveur.domaine. Par exemple, myapp.
- , Suivez les étapes ci-dessous sur votre ordinateur.
allez sur le site et annulez le dialogue de connexion. Que cela arrive:
dans les paramètres D'IE:
WindowsIdentity.GetCurrent
est correct: vous devez obtenir L'utilisateur D'APPPOOL. C'est parce que le ASP.NET processus, qui exécute votre code, est l'identité actuelle. Si vous voulez qu'il renvoie l'utilisateur frappant l'identité du site, vous aurez besoin d'ajouter la ligne suivante dans votre web.config:
<identity impersonate="true" />
Ceci fait que le processus d'assumer l'identité de l'utilisateur qui demande la page. Toutes les mesures seront effectuées en leur nom, de sorte que toute tentative de lecture des dossiers sur le réseau ou accéder aux ressources de base de données et autres signifiera l'utilisateur actuel aura besoin de permissions à ces choses. Vous pouvez lire plus au sujet de imitation ici . Notez que selon la façon dont la topologie de votre serveur web/base de données est configurée, vous pouvez rencontrer des problèmes de délégation avec l'usurpation d'identité activée.
mais votre problème original est qu'il semble que l'identité ne peut pas être déterminée et vous obtenez un popup de connexion. Je note que vous n'avez pas besoin de la Bloc <deny>
si vous avez désactivé l'authentification anonyme dans IIS. Nous ne l'incluons jamais (sauf dans les blocs spéciaux <location>
et autres) donc je dirais que vous pourriez essayer de l'enlever et essayer à nouveau. Tout sonne juste, cependant.
vous n'avez pas précisé quel utilisateur exécute le pool d'applications dans IIS. Est-il d'un compte personnalisé ou est-il celui par défaut? S'il est personnalisé, est-ce un compte de domaine ou un compte local sur le serveur web? Comptes personnalisés peuvent parfois quelques étapes supplémentaires sont nécessaires, comme l'enregistrement d'un NPS. En outre, il peut être un problème avec le compte personnalisé n'ayant pas la permission dans L'annonce pour résoudre le compte de l'Utilisateur entrant.
vous pouvez également vérifier les journaux de L'IIS pour voir quelle réponse est retournée. Ce sera probablement un 401, mais il devrait y avoir un sous-Numéro après comme 401.2 ou quelque chose. Ce sous-nombre peut parfois aider à déterminer le problème racine. Ce KB article liste cinq.
dans mon cas, les paramètres d'autorisation n'ont pas été configurés correctement.
j'ai dû
-
ouvrir .NET Règles d'Autorisation dans le Gestionnaire des services internet
-
et supprimer le Règle de refus
dans notre Intranet le problème a été résolu du côté du client en modifiant les paramètres de sécurité comme montré ici. L'une des cases à cocher sur la droite a travaillé pour nous.
je viens de résoudre un problème similaire avec un ASP.Net application.
symptômes: Je pouvais me connecter à mon application en utilisant un utilisateur local, mais pas un utilisateur de domaine, même si la machine était correctement reliée au domaine (comme vous le dites dans votre Note supplémentaire). Dans le visualiseur D'événement de sécurité, il y avait un événement avec ID=4625 "domain sid inconsistent".
Solution: J'ai trouvé la solution ici . Le problème était que mes machines de test étaient des machines virtuelles clonées (Windows Server 2008 R2; un contrôleur de domaine, et un serveur web). Tous les deux avaient la même machine SID, ce qui a apparemment causé des problèmes. Voici ce que j'ai fait:
- Supprimer le serveur web du domaine.
- Run c:\Windows\System32\Sysprep\Sysprep.exe dans la VM.
- redémarre la VM.
- Rejoignez le serveur web domaine.
Vous perdez certains paramètres dans le processus (préférences de l'utilisateur, IP statique, recréer le certificat auto-signé), mais maintenant que je l'ai recréé, tout fonctionne correctement.
j'ai aussi eu le même problème. Essayé la plupart des choses trouvées sur ce forum et d'autres.
a finalement réussi après avoir fait un peu de RnD.
je suis allé dans paramètres IIS et puis dans mon site web permission options ajouté mon groupe D'utilisateurs de domaine D'organisations.
maintenant que tous mes utilisateurs de domaine ont obtenu l'accès à ce site web, Je n'ai pas rencontré ce problème.
Espérons que cette aide
avez-vous essayé de vous connecter avec votre préfixe de domaine, par exemple DOMAIN\Username? IIS 6 par défaut à l'utilisation de l'ordinateur hôte comme domaine par défaut donc spécifier le domaine à l'ouverture de session peut résoudre le problème.
j'ai essayé les astuces de configuration IIS ci-dessus et le hack de registre de loopback, et j'ai revu et recréé les permissions du pool d'applications et une douzaine d'autres choses et je n'ai toujours pas été en mesure de me débarrasser de la boucle d'authentification tournant sur mon poste de travail de développement avec IIS Express ou IIS 7.5, à partir d'une session de navigation locale ou à distance. J'ai reçu quatre réponses 401.2 et une page blanche. Le même site déployé sur mon serveur de mise en scène IIS 8.5 fonctionne parfaitement.
Enfin I le balisage du corps de réponse qui a été rendu vierge par le navigateur contenait la page par défaut pour une connexion réussie. J'ai déterminé que la gestion des erreurs ASP.NET et HTTP pour l'erreur 401 était d'empêcher / interférer avec L'authentification de Windows mon poste de travail mais pas le serveur de staging. J'ai passé plusieurs heures à m'occuper de ça, mais dès que j'ai supprimé la gestion sur mesure pour l'erreur 401, le poste de travail était redevenu normal. Je présente ceci encore une autre façon de tirer votre propre pied.
Windows authentication in IIS7.0 ou IIS7.5 ne fonctionne pas avec kerberos (provider = Negotiate) lorsque l'identité du pool d'applications est Applicationpolitik L'un doit utiliser le service réseau ou un autre compte d'intégration. Une autre possibilité est D'utiliser NTLM pour faire fonctionner Windows Authenticatio (dans Windows Authentication, Providers, put NTLM on top ou remove negotiate)
chris van De vijver
j'ai eu le même problème parce que l'utilisateur (identité) que j'ai utilisé dans le pool d'applications n'était pas inférieur au groupe IIS_IUSRS. Ajouté l'utilisateur au groupe et tout le travail
dans mon cas, la solution était (en plus des ajustements suggérés ci-dessus) de redémarrer mon/ordinateur de développement local / IIS (serveur d'hébergement) / utilisateur. Mon utilisateur vient d'être ajouté au groupe de sécurité AD nouvellement créé - et la politique ne s'appliquait pas au compte AD utilisateur jusqu'à ce que je me déconnecte/redémarre mon ordinateur.
J'espère que cela aidera quelqu'un.
j'ai rencontré le même problème de demande de justificatifs d'identité, et j'ai fait une recherche rapide et rien sur internet ne pourrait le corriger. Il a fallu un certain temps pour trouver le problème, une sotte.
Dans IIS -> paramètres avancés -> Chemin d'accès Physique à des informations d'Identification (vide)
dès que j'ai ajouté un identifiant de machine (domaine/utilisateur) qui a accès à la VM/serveur, la sollicitation de mot de passe s'arrêterait.
Espérons que cette aide
j'ai eu ce problème sur .net core 2 et après avoir passé en revue la plupart des suggestions d'ici, il semble que nous avons manqué un réglage sur le web.config
<aspNetCore processPath="dotnet" arguments=".\app.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
le réglage correct était forwardWindowsAuthToken= "true" cela semble évident maintenant, mais quand il y a tant de situations pour le même problème, il est plus difficile de préciser
Edit: j'ai aussi trouvé utile la suite de article Msdn qui va bien par le biais de résoudre le problème.
j'ai eu le même problème et il a été résolu en changeant l'identité du pool D'Application sous lequel l'application web est en cours d'exécution à NetworkService