HttpContext.Actuel.L'utilisateur n'est pas remplie avec l'Authentification Windows est activé
J'ai un asp.net application intranet à l'aide de l'authentification windows. J'ai créé l'application d'années avec VS 2005, et l'authentification windows bits fonctionnait parfaitement. Mon web.config est la suivante (à l'intérieur de configuration -> système.web élément):
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
J'ai tester cela dans Firefox pour confirmer que les informations d'identification sont nécessaires, et en effet, je suis invité pour mon réseau, les informations d'identification lors de la première de l'accès au site, et je suis refusée si elles ne sont pas valides.
Cependant, lorsque j'essaie d'accéder à HttpContext.Actuel.De l'utilisateur.L'identité, l'objet a vide chaînes de caractères pour le Nom et AuthenticationType, et Authentifié = false. J'ai pensé que je pourrais avoir besoin pour permettre à l'WindowsTokenRoleProvider après la recherche autour de l'interwebs, et cela n'a pas changer quoi que ce soit.
<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<clear/>
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
</providers>
</roleManager>
Deux choses que j'ai fait depuis la dernière fois que j'ai vu à l'oeuvre sont mise à niveau du projet de VS 2008 par le biais de l'assistant de conversion, et j'ai aussi mis vers le bas pour plusieurs mois alors que mes collègues peuvent avoir travaillé ici ou là. Je suis presque sûr que la seule chose qui affecte mon Utilisateur.L'identité sont les valeurs dans le web.config mentionné ci-dessus, mais apparemment, je suis en train de faire quelque chose de mal. Quiconque rencontre un problème similaire, ou de voir quelque chose que je fais mal? Merci.
Yep...testé sous IE. La seule raison pour laquelle je l'ai mentionné Firefox est parce que IE passe automatiquement vos informations d'identification, tandis que FF forces de vous connecter via l'invite de commandes. C'est ainsi que je sais que je suis le blocage de l'accès anonyme, mais je suis encore en train vide d'info sur l'Utilisateur.Identité
Quand vous dites "quand j'essaie d'accéder à HttpContext.Actuel.De l'utilisateur.L'identité", à quel point dans le cycle de vie de page faites-vous cela?
Page_Load. Et n'oubliez pas, je suis forcé de fournir des informations d'identification (se fait automatiquement dans IE, mais sous Firefox, je suis tenu de vous connecter). Je vais jouer avec les paramètres d'emprunt d'identité, lundi, quand je serai de retour au travail tel que recommandé dans d'autres posts.
OriginalL'auteur Rich | 2009-07-31
Vous devez vous connecter pour publier un commentaire.
Je crois que vous devez vous assurer que l'accès anonyme est éteint dans IIS pour le site/virtuel.
OriginalL'auteur DancesWithBamboo
Assurez-vous que votre
<httpModules>
l'article n'a pas été effacé. Votre web de l'appareil.fichier de configuration devrait inclure un extrait de code comme ceci:L'élément important ici est
WindowsAuthentication
. Assurez-vous qu'il est dans votre%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config
fichier. Aussi, assurez-vous que votre propre site web et web.fichier de configuration qui apparaît dans un "parent" du site ou le dossier n'a pas un<clear/>
balise dans son<httpModules>
section. Sans leWindowsAuthentication
module, il n'a pas d'importance si le navigateur vous oblige à vous connecter ou pas... ASP.NET ne sera jamais réellement leUser
propriété sans ce module inclus.Commande de
httpModules
est également importante, et, en particulier, je crois que leWindowsAuthentication
module doit apparaître avant laAnonymousIdentification
.OriginalL'auteur Andrew Arnott
Essayez d'ajouter pour obtenir le comportement que vous voulez? Lorsque l'usurpation d'identité n'est pas activé, il reste encore beaucoup qui se produit sous le nom de SERVICES de RÉSEAU ou de l'utilisateur ASPNET
Et voici , Hanselman post de blog qui a l'autre folle idée qui m'est venue à l'esprit:
OriginalL'auteur MatthewMartin
Quelques idées:
Sur la configuration du site, tirer vers le haut le "ASP.NET Configuration de la boîte de dialogue" Paramètres. Sur "Authentification" de l'onglet, qui est le "mode d'Authentification' définie sur 'Windows' ()? Sur l '"Application" de l'onglet, n'en Local "usurpation d'identité" get set (je pense que ça doit pas être cochée).
Votre serveur me déposer le nom de domaine? L'utilisateur exécutant l'application de la piscine de changement? N'domaine des politiques de changement, empêchant le serveur à partir de l'identification de l'utilisateur à des fins d'authentification vérifie (pas de délégation)?
Avez-vous essayé de réinstaller le asp.net extensions pour votre site? (C'est un grand sujet en lui-même.)
Vous pouvez cocher la case HttpContext.SkipAuthorization drapeau de la programmation.
OriginalL'auteur Marsh Ray
Où voulez-vous de vérifier pour cet utilisateur? Dans le cycle de la demande il y a quelques événements déclenchés avant l'autorisation prend place.
Si vous sont à l'essai sur Vista, Windows 7 ou Windows Server 2008, il y a peut être d'autres différences, parce que le ASP.Net et IIS pipeline sont intégrés sur IIS 7 configuration par défaut.
OriginalL'auteur Bert Huijben
Avez-vous essayé d'ajouter l'identité usurpation d'identité:
sur le web.config?
OriginalL'auteur Dan Diplo