J'ai une application .NET 3.5 fonctionnant sous IIS 7 sur le serveur Windows 2003 et je ne parviens pas à faire fonctionner correctement l'authentification Windows intégrée car je continue à être invité à me connecter. J'ai défini l'authentification Windows sur activée dans IIS avec tous les autres types de sécurité désactivés et mon authentification / autorisation de fichier web.config d'application est configurée comme:
<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 à une vérification en coulisse de l'utilisateur Windows pour autoriser l'accès et refuser les utilisateurs anonymes. Cependant, ce que j'obtiens est une fenêtre de connexion Windows lorsque j'essaye d'accéder au site.
Je résout ce problème depuis quelques jours maintenant et je ne parviens pas à résoudre le problème. Sur la base de publications présentant des problèmes similaires, j'ai confirmé que mon URL n'incluait pas de points, j'ai vérifié que mes paramètres IE sont définis sur Activer l'authentification Windows intégrée, et j'ai également ajouté mon URL à mes sites intranet, tout en obtenant toujours la fenêtre contextuelle.
Pour le dépanner davantage, j'ai activé l'authentification anonyme dans IIS et modifié mon fichier web.config dans lequel je peux accéder directement, puis j'ai ajouté Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name.toString () ) pour essayer de voir quel utilisateur est utilisé dans l'authentification. Le résultat que j'obtiens est IIS APPPOOL \ myapp qui est évidemment le pool d'applications IIS pour mon application.
J'apprécie vraiment toute aide que quiconque peut fournir afin que j'utilise toujours uniquement l'authentification Windows, mais que je n'obtiens pas la fenêtre contextuelle et que l'authentification Windows soit effectuée contre l'utilisateur Windows réel.
Merci.
Remarque supplémentaire après un dépannage plus poussé:
Je viens de remarquer que lorsque la connexion échoue et que l'invite de connexion Windows s'affiche à nouveau, le nom d'utilisateur qui a tenté de se connecter en tant que "SERVERNAME" \ "USERNAME" m'a amené à croire qu'il essayait de valider l'utilisateur contre le serveur par rapport 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 le même mot de passe que l'utilisateur du domaine réseau et j'ai essayé de me connecter à nouveau. Le résultat a été que j'ai reçu à nouveau l'invite de connexion, 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 je ne sais vraiment pas pourquoi l'authentification IIS pointe vers les comptes de serveur d'applications locaux et non vers les comptes de domaine. Je me rends compte que c'est une question IIS à ce stade, donc poster sur forums.iis.
<authentication mode="Windows" />
J'espère que ce n'était qu'une faute de frappe dans votre question?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 celle de l'OP sur un serveur Windows 2003.
Voici ce que j'ai fait (enregistrer ceci ici pour que je puisse le retrouver plus tard).
J'avais ce même problème:
Dans mon fichier Web.config , j'avais cette section:
Sous IIS, tous ces problèmes semblent être résolus sous l' icône d' authentification .
Maintenant, allez dans les fonctionnalités de l' authentification :
Activez l' authentification anonyme avec
IUSR
:Activez l' authentification Windows , puis cliquez avec le bouton droit pour définir les fournisseurs .
NTLM doit être le PREMIER!
Ensuite, vérifiez que sous Paramètres avancés ... la protection étendue est Accepter et Activer l'authentification en mode noyau est VÉRIFIÉE:
Une fois que j'ai fait cela, je suis retourné à mon application Web, j'ai cliqué sur le lien Parcourir et je me suis connecté sans avoir à fournir à nouveau mes informations d'identification.
J'espère que cela sera bénéfique pour beaucoup d'entre vous, et j'espère que cela me sera également utile plus tard.
la source
Juste pour le bénéfice des autres. Si l'erreur est a
401.1 Unauthorized
et que votre code d'erreur correspond0xc000006d
, vous rencontrez en fait une "fonctionnalité" de sécurité qui bloque les demandes au nom de domaine complet ou aux en-têtes d'hôte personnalisés qui ne correspondent pas au nom de votre ordinateur local:Suivez cet article d'assistance pour résoudre le problème:
https://webconnection.west-wind.com/docs/_4gi0ql5jb.htm (original, maintenant disparu: http://support.microsoft.com/kb/896861 )
Dans l'article d'assistance, pour vous assurer qu'il ne se perd pas:
Celui-ci m'a pris du temps parce que les commentaires de tout le monde ici n'ont pas réussi à m'aider. J'ai trouvé cet article et il l'a corrigé!
la source
J'ai eu un problème similaire dans lequel je voulais protéger seulement une certaine partie de mon site Web. Tout a bien fonctionné sauf dans IE. L'authentification anonyme et Windows est activée. Pour Anonyme, l'identité est définie sur l'identité du pool d'applications. Le problème était lié à l'authentification Windows. Après quelques recherches, j'ai lancé Fiddler et j'ai découvert qu'il utilisait Kerberos comme fournisseur (en fait, il est défini sur Negotiate par défaut). Je l'ai basculé sur NTLM et cela l'a corrigé. HTH
Daudi
la source
Ajoutez l'autorisation [Utilisateurs du domaine] à votre sécurité Web.
la source
Ne créez pas d'erreurs sur votre serveur en modifiant tout. Si vous avez une invite Windows à vous connecter lors de l'utilisation de l'authentification Windows sur 2008 R2, accédez simplement à
Providers
et déplacez- vous vers le HAUTNTLM
pour chaque application. QuandNegotiate
est le premier dans la liste, l'authentification Windows peut cesser de fonctionner pour une application spécifique sur 2008 R2 et vous pouvez être invité à entrer un nom d'utilisateur et un mot de passe qui ne fonctionnent jamais. Cela arrive parfois lorsque vous avez mis à jour votre application. Assurez-vous simplement queNTLM
c'est le premier sur la liste et vous ne verrez plus jamais ce problème.la source
Si votre URL comporte des points dans le nom de domaine, IE la traitera comme une adresse Internet et non locale. Vous avez au moins deux options:
Accédez au site et annulez la boîte de dialogue de connexion. Laissez ceci arriver:
Dans les paramètres d'IE:
la source
WindowsIdentity.GetCurrent
est correct: vous devriez obtenir l'utilisateur APPPOOL. Cela est dû au fait que le processus ASP.NET, qui exécute votre code, est l'identité actuelle. Si vous voulez qu'il renvoie l'utilisateur frappant l'identité du site, vous devrez ajouter la ligne suivante dans votre web.config:Cela amène le processus à prendre l'identité de l'utilisateur qui demande la page. Toutes les actions seront effectuées en leur nom, donc toute tentative de lecture de dossiers sur le réseau ou d'accès aux ressources de la base de données et autres signifiera que l'utilisateur actuel aura besoin d'autorisations pour ces choses. Vous pouvez en savoir plus sur l'usurpation d'identité ici . Notez que selon la configuration de la topologie de votre serveur Web / de base de données, vous pouvez rencontrer des problèmes de délégation avec l'emprunt d'identité activé.
Mais votre problème initial est qu'il semble que l'identité ne peut pas être déterminée et que vous obtenez une fenêtre de connexion. Je noterai que vous n'avez pas besoin du
<deny>
blocage si vous avez désactivé l'authentification anonyme dans IIS. Nous ne l'incluons jamais (sauf dans des<location>
blocs spéciaux et autres), donc je dirais que vous pourriez essayer de le supprimer et réessayer. Tout le reste sonne bien, cependant.Vous n'avez pas spécifié quel utilisateur exécute le pool d'applications dans IIS. Est-ce un compte personnalisé ou est-ce celui par défaut? S'il est personnalisé, s'agit-il d'un compte de domaine ou d'un compte local sur le serveur Web? Les comptes personnalisés peuvent parfois nécessiter quelques étapes supplémentaires, telles que l'enregistrement d'un SPN. En outre, cela peut être un problème avec le compte personnalisé n'ayant pas l'autorisation dans AD pour résoudre le compte de l'utilisateur entrant.
Vous pouvez également consulter les journaux IIS pour voir quelle réponse est renvoyée. Ce sera probablement un 401, mais il devrait avoir un sous-numéro après lui comme 401.2 ou quelque chose comme ça. Ce sous-numéro peut parfois aider à déterminer la racine du problème. Cet article de la base de connaissances en répertorie cinq.
la source
Cela a réglé le problème pour moi.
Mon serveur et mon ordinateur client sont Windows 7 et sont dans le même domaine
dans iis7.5-activer l'authentification Windows pour votre intranet (désactiver toutes les autres authentifications .. également Pas besoin de mentionner l'authentification Windows dans le fichier web.config
puis allez sur le PC client .. IE8 ou 9- Outils-Options Internet-Sécurité-Intranet local-Sites-avancés-Ajoutez votre site (enlevez le ticketmark "require server verfi ..." .. pas besoin
IE8 ou 9- Outils-Options Internet-Sécurité-Intranet local-Niveau personnalisé-authentification de l'utilisateur-connexion-sélectionner une connexion automatique avec le nom d'utilisateur et le mot de passe actuels
enregistrez ces paramètres .. vous avez terminé .. Plus besoin de demander le nom d'utilisateur et le mot de passe.
Assurez-vous que, puisque votre ordinateur client fait partie du domaine, vous devez avoir un GPO pour ces paramètres, ou sinon ce paramètre sera rétabli lorsque l'utilisateur se connectera à Windows la prochaine fois
la source
Peut être lié au navigateur. Si vous utilisez IE, vous pouvez accéder aux Paramètres avancés et cocher la case "Activer l'authentification intégrée Windows".
la source
Dans mon cas, les paramètres d'autorisation n'ont pas été configurés correctement.
j'ai dû
ouvrir les règles d'autorisation .NET dans le gestionnaire IIS
et supprimez la règle de refus
la source
Dans notre intranet, le problème a été résolu côté client en ajustant les paramètres de sécurité comme indiqué ici. Chacune des cases à cocher à droite a fonctionné pour nous.
la source
Je viens de résoudre un problème similaire avec une application ASP.Net.
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 jointe au domaine (comme vous le dites dans votre note supplémentaire). Dans la visionneuse d'événements de sécurité, il y avait un événement avec l'ID = 4625 "sid de domaine incohérent".
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). Les deux avaient le même SID de machine, ce qui a apparemment causé des problèmes. Voici ce que j'ai fait:
Vous perdez certains paramètres dans le processus (préférences utilisateur, adresse IP statique, recréer le certificat auto-signé), mais maintenant que je les ai recréés, tout fonctionne correctement.
la source
J'ai également eu le même problème. J'ai essayé la plupart des choses trouvées sur ce forum et sur d'autres.
Finalement a réussi après avoir fait un petit RnD.
Je suis entré dans les paramètres IIS , puis dans les options d' autorisation de mon site Web , j'ai ajouté mon groupe d'utilisateurs du domaine des organisations.
Maintenant que tous les utilisateurs de mon domaine ont eu accès à ce site Web, je n'ai pas rencontré ce problème.
J'espère que cela t'aides
la source
Avez-vous essayé de vous connecter avec votre préfixe de domaine, par exemple DOMAINE \ Nom d'utilisateur? IIS 6 utilise par défaut l'ordinateur hôte comme domaine par défaut, de sorte que la spécification du domaine à l'ouverture de session peut résoudre le problème.
la source
J'ai essayé les astuces de configuration IIS ci-dessus et le piratage du registre de bouclage, et j'ai examiné et recréé les autorisations du pool d'applications et une douzaine d'autres choses et je n'ai toujours pas pu me débarrasser de la boucle d'authentification en cours d'exécution sur mon poste de travail de développement avec IIS Express ou IIS 7.5, depuis une session de navigation locale ou distante. J'ai reçu quatre réponses d'état 401.2 et une page blanche. Le même site déployé sur mon serveur de transfert IIS 8.5 fonctionne parfaitement.
Enfin, j'ai remarqué que le balisage dans le corps de la réponse qui était vide par le navigateur contenait la page par défaut pour une connexion réussie. J'ai déterminé que la gestion des erreurs personnalisées pour ASP.NET et HTTP pour l'erreur 401 empêchait / interférait avec l'authentification Windows sur mon poste de travail mais pas le serveur intermédiaire. J'ai passé plusieurs heures à jouer avec cela, mais dès que j'ai supprimé la gestion personnalisée pour l'erreur 401, le poste de travail était revenu à la normale. Je présente cette façon encore une autre de tirer votre propre pied.
la source
L'authentification Windows dans IIS7.0 ou IIS7.5 ne fonctionne pas avec Kerberos (provider = Negotiate) lorsque l'identité du pool d'applications est ApplicationPoolIdentity One doit utiliser le service réseau ou un autre compte intégré. Une autre possibilité est d'utiliser NTLM pour faire fonctionner Windows Authenticatio (dans l'authentification Windows, les fournisseurs, mettre NTLM au-dessus ou supprimer négocier)
chris van de vijver
la source
J'ai eu le même problème car l'utilisateur (Identity) que j'ai utilisé dans le pool d'applications n'appartenait pas au groupe IIS_IUSRS. Ajout de l'utilisateur au groupe et tout fonctionne
la source
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). Mon utilisateur vient d'être ajouté au groupe de sécurité AD nouvellement créé - et la stratégie ne s'appliquait pas au compte utilisateur AD jusqu'à ce que je me déconnecte / redémarre mon ordinateur.
J'espère que cela aidera quelqu'un.
la source
J'ai rencontré le même problème de demande d'informations d'identification, et j'ai fait une recherche rapide et rien sur Internet ne pouvait le résoudre. Il a fallu un certain temps pour trouver le problème, un problème idiot.
Dans IIS -> Paramètres avancés -> Informations d'identification du chemin physique (est vide)
Dès que j'ai ajouté un ID de machine (domaine / utilisateur) ayant accès à la VM / serveur, l'invite de mot de passe s'arrêterait.
J'espère que cela t'aides
la source
J'avais ce problème sur .net core 2 et après avoir parcouru la plupart des suggestions d'ici, il semble que nous ayons manqué un paramètre sur web.config
Le paramètre correct était forwardWindowsAuthToken = "true", ce qui semble évident maintenant, mais quand il y a tant de situations pour le même problème, il est plus difficile de les identifier
Edit: j'ai également trouvé utile l' article Msdn suivant qui décrit le dépannage du problème.
la source
J'ai eu le même problème et il a été résolu en modifiant l'identité du pool d'applications du pool d'applications sous lequel l'application Web s'exécute vers NetworkService
la source