HttpContext.Aktuelle.Benutzer nicht aufgefüllt, mit Windows-Authentifizierung aktiviert ist
Habe ich eine asp.net intranet-Anwendung mithilfe der windows-Authentifizierung. Ich habe die Anwendung schon vor Jahren mit VS 2005 und die windows-Authentifizierung bit arbeitete perfekt. Meine web.config ist die folgende (innen-Konfiguration -> system.web-element):
<authentication mode="Windows" />
<authorization>
<deny users="?"/>
</authorization>
Teste ich diese in Firefox, um zu bestätigen, dass die Anmeldeinformationen erforderlich sind, und in der Tat bin ich aufgefordert, meine Netzwerk-Anmeldeinformationen beim ersten Zugriff auf die Website, und ich bin verweigert, wenn Sie ungültig sind.
Jedoch, wenn ich versuche, auf HttpContext.Aktuelle.Benutzer.Identität, die das Objekt hat leere strings für Namen und AuthenticationType, und Authenticated = false. Ich dachte, ich könnte brauchen, um die WindowsTokenRoleProvider nach der Suche rund um das Internet herum, und das hat auch nichts ändern.
<roleManager defaultProvider="WindowsProvider" enabled="true" cacheRolesInCookie="false">
<providers>
<clear/>
<add name="WindowsProvider" type="System.Web.Security.WindowsTokenRoleProvider"/>
</providers>
</roleManager>
Zwei Dinge, die ich getan habe, seit ich das Letzte mal gesehen habe, arbeiten sind ein upgrade das Projekt auf VS 2008 durch den Konvertierungs-Assistenten, und außerdem habe ich es nach unten für mehrere Monate, während meine co-Arbeiter möglicherweise gearbeitet haben, auf die es hier oder dort. Ich war mir ziemlich sicher, dass die einzige Sache, die beeinflusst meine User.Identität sind die Werte in der web.config oben erwähnt, aber anscheinend mache ich etwas falsch. Jemand anderes auch eine ähnliche Problem-oder sehen etwas, was ich falsch mache? Danke.
Yep...getestet im IE als auch. Der einzige Grund, warum ich erwähnt, Firefox, weil der IE automatisch geht, Ihre Anmeldeinformationen in der Erwägung, dass FF zwingt Sie, die Anmeldung über die Eingabeaufforderung. Das ist, wie ich weiß, ich bin die Blockierung anonymer Zugriff, aber ich bin noch immer leer, info auf Benutzer.Identität
Wenn Sie sagen, "wenn ich versuche, auf HttpContext.Aktuelle.Benutzer.Identität", an welcher Stelle in der Seite lifecycle machst du das?
Page_Load. Und denken Sie daran, ich bin gezwungen, die Anmeldeinformationen (geschieht automatisch im IE, aber im Firefox bin ich verpflichtet, log-in). Ich werde spielen, um mit Identitätswechsel Einstellungen auf Montag, wenn ich wieder arbeiten, wie empfohlen, in anderen Beiträgen.
InformationsquelleAutor Rich | 2009-07-31
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, Sie brauchen, um stellen Sie sicher, dass der anonyme Zugriff deaktiviert ist im IIS für die Website/virtuelle.
InformationsquelleAutor DancesWithBamboo
Stellen Sie sicher, dass Ihre
<httpModules>
Abschnitt noch nicht gelöscht wurde. Ihre Maschine web.config-Datei sollte ein snippet wie dieses:Die wichtig element hier ist
WindowsAuthentication
. Stellen Sie sicher, dass es in Ihrem%SystemRoot%\Microsoft.NET\Framework\v2.0.50727\CONFIG\Web.config
- Datei. Auch, stellen Sie sicher, dass beide Ihre eigene web-site und web.config-Datei wird in einem "übergeordneten" Standort Website oder den Ordner, nicht über eine<clear/>
tag in seiner<httpModules>
Abschnitt. Ohne dieWindowsAuthentication
- Modul, es spielt keine Rolle, ob der browser zwingt Sie, sich zu melden oder nicht... ASP.NET wird nie wirklich festgelegt, dieUser
Eigenschaft ohne dieses Modul enthalten.Bestellung von
httpModules
ist auch von Bedeutung, und insbesondere glaube ich, dass dieWindowsAuthentication
Modul angezeigt werden muss vor dieAnonymousIdentification
.InformationsquelleAutor Andrew Arnott
Versuchen, indem man das Verhalten, das Sie wollen? Wenn der Identitätswechsel nicht eingeschaltet ist, eine Menge passiert immer noch unter dem Namen NETWORK SERVICES oder dem ASPNET-Benutzer
Und hier ist Hanselman blog-post , hat der andere verrückte Idee in den Sinn kam:
InformationsquelleAutor MatthewMartin
Einige Ideen:
Auf der Website Konfiguration, ziehen Sie die "ASP.NET Konfiguration-Einstellungen" - dialog. Auf die "Authentifizierung" Registerkarte 'Authentifizierung' auf 'Windows' ()? Auf die "Anwendung" Registerkarte, hab 'Lokaler Identitätswechsel' get set (ich denke, es sollte deaktiviert sein).
Haben Ihre server abgesetzt, die domain? Hat der user, der die app ausführt pool ändern? Haben die Richtlinien ändern, verhindern, dass der server von der Identität des Benutzers für die Zwecke der auth-Prüfungen (keine delegation)?
Haben Sie versucht, neu zu installieren asp.net Erweiterungen für Ihre Website? (Dies ist ein großes Thema für sich.)
Könnten Sie überprüfen die HttpContext.SkipAuthorization Flagge programmgesteuert.
InformationsquelleAutor Marsh Ray
Wo wollen Sie überprüfen, die für diesen Benutzer? In der request-Zyklus gibt es einige Ereignisse ausgelöst, bevor die Genehmigung erfolgt.
Wenn Sie den Test unter Vista, Windows 7 oder Windows Server 2008 kann es andere Unterschiede, da die ASP.Net und die IIS-pipeline integriert werden, die auf IIS 7 ist die Standard Konfiguration.
InformationsquelleAutor Bert Huijben
Haben Sie versucht, indem Identitätswechsel:
auf das web.config?
InformationsquelleAutor Dan Diplo