Ich habe eine .NET 3.5-Anwendung, die unter IIS 7 auf einem Windows 2003-Server ausgeführt wird, und kann die integrierte Windows-Authentifizierung nicht ordnungsgemäß ausführen, wenn ich weiterhin nach einem Login gefragt werde. Ich habe die Windows-Authentifizierung in IIS aktiviert, wobei alle anderen Sicherheitstypen deaktiviert sind. Die Authentifizierung/Autorisierung meiner Anwendung web.config-Datei ist wie folgt eingerichtet:
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="3.5" />
<authenticationmode="Windows"/>
<authorization>
<deny users = "?" />
</authorization>
</system.web>
Mit diesem Setup erwarte ich, dass der Windows-Benutzer hinter den Kulissen überprüft, um den Zugriff zuzulassen und anonyme Benutzer zu verweigern. Was ich jedoch bekomme, ist ein Windows-Login-Popup, wenn ich versuche, auf die Site zuzugreifen.
Ich habe dieses Problem seit einigen Tagen behoben und kann das Problem nicht herausfinden. Aufgrund von Beiträgen mit ähnlichen Problemen habe ich bestätigt, dass meine URL keine Punkte enthält. Ich habe noch einmal überprüft, ob meine IE -Einstellungen auf Integrierte Windows-Authentifizierung aktivieren eingestellt sind. Außerdem wurde meine URL zu meinen Intranetseiten hinzugefügt, der Popup wird jedoch weiterhin angezeigt -oben.
Zur weiteren Fehlerbehebung habe ich die anonyme Authentifizierung in IIS aktiviert und meine web.config -Datei so geändert, dass ich sie direkt eingeben kann, und dann Response.Write (System.Security.Principal.WindowsIdentifity.getcurrent (). User.name) hinzugefügt .toString ()), um zu sehen, welcher Benutzer bei der Authentifizierung verwendet wird. Das Ergebnis ist IIS APPPOOL\myapp. Dies ist offensichtlich der IIS - Anwendungspool für meine Anwendung.
Ich freue mich über jede Hilfe, die jeder leisten kann, so dass ich immer noch nur die Windows-Authentifizierung verwende, aber das Popup nicht bekomme und die Windows-Authentifizierung mit dem tatsächlichen Windows-Benutzer durchgeführt wird.
Vielen Dank.
Zusätzlicher Hinweis zur Fehlerbehebung weiter:
Ich habe gerade bemerkt, dass, wenn die Anmeldung fehlschlägt und die Windows-Anmeldeaufforderung erneut angezeigt wird, der Benutzername, der versucht hat, sich als "SERVERNAME"\"USERNAME" anzumelden, angezeigt wurde. Dies hat mich zu der Annahme geführt, dass der Benutzer versucht, den Server gegen den Server zu überprüfen Domain. Um dies zu bestätigen, habe ich direkt auf dem App-Server ein lokales Benutzerkonto mit demselben Benutzernamen und Kennwort wie der Netzwerkdomänenbenutzer erstellt und versucht, mich erneut anzumelden. Das Ergebnis war, dass ich die Anmeldeaufforderung erneut erhalten habe. Als ich jedoch dieses Mal Benutzername und Kennwort eingegeben hatte, konnte ich mich erfolgreich anmelden. Der Netzwerkbenutzer und der App-Server befinden sich in derselben Domäne. Sie sind sich also nicht sicher, warum die Authentifizierung IIS auf die lokalen App-Server-Konten und nicht auf die Domänen-Konten verweist. Ich stelle fest, dass dies eine IIS -Frage an diesem Punkt ist, also auch auf forums.iis.net posten, aber ich freue mich über jeden Rat, den jemand seit Tagen gefunden hat.
Ich habe einen Windows 2008-Server, an dem ich gerade arbeite. Daher ist meine Antwort nicht ganz dieselbe wie bei einem OP auf einem Windows 2003-Server.
Hier ist das, was ich gemacht habe (hier aufnehmen, damit ich es später finden kann).
Ich hatte das gleiche Problem:
In meiner Web.config -Datei hatte ich diesen Abschnitt:
<system.web>
<authentication mode="Windows" />
<authorization>
<allow users="*" />
<deny users="?" />
</authorization>
</system.web>
Unter IIS scheinen alle diese Probleme unter dem Symbol Authentication gelöst zu werden.
Gehen Sie nun zu den Funktionen von Authentication :
Aktivieren Sie anonyme Authentifizierung mit der IUSR
:
Aktivieren Sie Windows-Authentifizierung , und klicken Sie dann mit der rechten Maustaste, um die Anbieter festzulegen.
NTLM muss ZUERST sein!
Überprüfen Sie als Nächstes unter Erweiterte Einstellungen ... der Erweiterte Schutz ist Akzeptieren und Aktivieren Sie die Kernelmodus-Authentifizierung .
Nachdem ich dies getan hatte, ging ich zurück zu meiner Webanwendung, klickte auf den Link Durchsuchen und loggte mich ein, ohne meine Anmeldeinformationen erneut eingeben zu müssen.
Ich hoffe, dass sich dies für viele von Ihnen als vorteilhaft erweist, und ich hoffe, dass es später auch für mich nützlich ist.
Nur zum Wohl anderer. Wenn der Fehler ein 401.1 Unauthorized
ist und Ihr Fehlercode mit 0xc000006d
übereinstimmt, dann treffen Sie tatsächlich auf eine Sicherheitsfunktion, die Anforderungen an den FQDN oder an benutzerdefinierte Host-Header blockiert, die nicht mit dem Namen Ihres lokalen Computers übereinstimmen:
Folgen Sie diesem Support-Artikel, um das Problem zu beheben:
http://support.Microsoft.com/kb/896861
Dies dauerte eine Weile, da mir die Kommentare aller anderen hier nicht geholfen haben. Ich habe diesen Artikel gefunden und ihn behoben!
Ich hatte ein ähnliches Problem, bei dem ich nur einen bestimmten Teil meiner Website schützen wollte. Alles hat gut funktioniert, außer im IE. Ich habe sowohl die anonyme als auch die Windows-Authentifizierung aktiviert .. Für Anonymous ist die Identität auf die Anwendungspoolidentität eingestellt. Das Problem lag bei der Windows-Authentifizierung. Nach einigem Graben habe ich den Fiddler angefeuert und festgestellt, dass Kerberos als Provider verwendet wurde. Ich habe es auf NTLM umgestellt und das wurde behoben . HTH
Daudi
Fügen Sie der Websicherheit die Berechtigung [Domänenbenutzer] hinzu.
Erstellen Sie keine Fehler auf Ihrem Server, indem Sie alles ändern. Wenn Sie über Windows-Anmeldeaufforderung bei Verwendung der Windows-Authentifizierung unter 2008 R2 verfügen, wechseln Sie einfach zu Providers
und bewegen Sie die UP-Variable NTLM
für jede Ihrer Anwendungen. Wenn Negotiate
an erster Stelle der Liste steht, kann die Windows-Authentifizierung die Arbeitseigenschaft für eine bestimmte Anwendung beenden In 2008 R2 können Sie aufgefordert werden, Benutzernamen und Kennwort einzugeben, als nie funktioniert. Dies passiert manchmal, wenn Sie Ihre Anwendung aktualisieren. Seien Sie einfach sicher, dass NTLM
an erster Stelle steht und Sie werden dieses Problem nie wieder sehen.
Das hat es für mich behoben.
Mein Server- und Client-PC ist Windows 7 und befindet sich in derselben Domäne
aktivieren Sie in iis7.5 die Windows-Authentifizierung für Ihr Intranet (deaktivieren Sie die gesamte andere Authentifizierung.). Windows-Authentifizierung muss in der Datei web.config nicht erwähnt werden
gehen Sie dann auf den Client-PC. IE8 oder 9- Tools-Internet-Optionen-Sicherheit-Lokales Intranet-Sites-Erweitert-Fügen Sie Ihre Site hinzu (nehmen Sie das "Erforderliche Server verfi ...") ticketmark..no brauchen
IE8 oder 9 - Extras - Internetoptionen - Sicherheit - Lokales Intranet - Benutzerdefinierte Ebene - Benutzerauthentifizierung - Automatische Anmeldung mit aktuellem Benutzernamen und Kennwort
speichern Sie diese Einstellungen .. Sie sind fertig .. Keine weiteren Aufforderungen zur Eingabe von Benutzername und Kennwort.
Stellen Sie sicher, dass Ihr Client-PC Teil der Domäne ist, und Sie müssen für diese Einstellungen ein GPO haben. Andernfalls wird diese Einstellung wiederhergestellt, wenn sich der Benutzer das nächste Mal bei Windows anmeldet
Wenn Ihre URL Punkte im Domänennamen enthält, behandelt IE sie als Internetadresse und nicht als lokale Adresse. Sie haben mindestens zwei Möglichkeiten:
Gehen Sie zur Website und brechen Sie den Anmeldedialog ab. Lass das geschehen:
In den Einstellungen des IE:
Kann auf den Browser bezogen sein. Wenn Sie den IE verwenden, können Sie zu den erweiterten Einstellungen wechseln und das Kontrollkästchen "Integrierte Windows-Authentifizierung aktivieren" aktivieren.
WindowsIdentity.GetCurrent
ist korrekt: Sie sollten den APPPOOL-Benutzer erhalten. Dies liegt daran, dass der ASP.NET-Prozess, der Ihren Code ausführt, die aktuelle Identität ist. Wenn Sie möchten, dass der Benutzer die Identität der Site angibt, müssen Sie die folgende Zeile in Ihre web.config einfügen:
<identity impersonate="true" />
Dadurch nimmt der Prozess die Identität des Benutzers an, der die Seite anfordert. Alle Aktionen werden in ihrem Namen ausgeführt. Wenn Sie also versuchen, Ordner im Netzwerk zu lesen oder auf Datenbankressourcen und ähnliches zuzugreifen, bedeutet dies, dass der aktuelle Benutzer Berechtigungen für diese Dinge benötigt. Weitere Informationen zum Identitätswechsel finden Sie hier . Beachten Sie, dass abhängig von der Einrichtung Ihrer Web-/Datenbankservertopologie möglicherweise Delegierungsprobleme bei aktiviertem Identitätswechsel auftreten.
Ihr ursprüngliches Problem ist jedoch, dass die Identität nicht ermittelt werden kann und Sie ein Anmeldungs-Popup sehen. Ich beachte, dass Sie den <deny>
-Block nicht benötigen, wenn Sie die anonyme Authentifizierung in IIS deaktiviert haben. Wir schließen es niemals ein (außer in speziellen <location>
-Blöcken und so). Ich würde also sagen, Sie könnten versuchen, es zu entfernen und es erneut zu versuchen. Alles andere hört sich jedoch richtig an.
Sie haben nicht angegeben, welcher Benutzer den Anwendungspool in IIS ausführt. Ist es ein benutzerdefiniertes Konto oder ist es das Standardkonto? Handelt es sich bei einem benutzerdefinierten Konto um ein Domänenkonto oder ein lokales Konto auf dem Webserver? Benutzerdefinierte Konten können manchmal einige weitere Schritte erfordern, z. B. die Registrierung eines SPN. Es kann auch ein Problem sein, wenn das benutzerdefinierte Konto keine Berechtigung zum Auflösen des Kontos für eingehende Benutzer in AD hat.
Sie können auch die Protokolle IIS überprüfen, um zu sehen, welche Antwort zurückgegeben wird. Es wird höchstwahrscheinlich eine 401 sein, aber danach sollte eine Subnummer wie 401.2 oder etwas anderes stehen. Diese Subnummer kann manchmal dazu beitragen, das Grundproblem zu ermitteln. Dieser KB-Artikel listet fünf auf.
In meinem Fall wurden die Berechtigungseinstellungen nicht richtig eingerichtet.
Ich musste
öffne das .NET-Autorisierungsregeln in IIS Manager
und löschen das Regel verweigern
Ich hatte auch das gleiche Problem. Habe die meisten Sachen aus diesem und anderen Foren ausprobiert.
Endlich war es nach einem kleinen eigenen RnD erfolgreich.
Ich ging in IIS Settings und dann in meine Website permission options zu meiner Organisationsdomänenbenutzergruppe.
Da nun allen meinen Domain-Benutzern der Zugriff auf diese Website gewährt wurde, ist dieses Problem nicht aufgetreten.
Hoffe das hilft
Ich habe gerade ein ähnliches Problem mit einer ASP.Net-Anwendung gelöst.
Symptome: Ich konnte mich mit einem lokalen Benutzer, aber nicht mit einem Domänenbenutzer bei meiner App anmelden, auch wenn der Computer der Domäne ordnungsgemäß beigetreten war (wie in Ihrer Zusätzlichen Anmerkung angegeben). Im Security Event Viewer gab es ein Ereignis mit der ID = 4625 "Domänenseiteninkonsistent".
Lösung: Ich habe die Lösung hier gefunden. Das Problem war, dass auf meinen Testmaschinen virtuelle Maschinen geklont wurden (Windows Server 2008 R2; ein Domänencontroller und ein Webserver). Beide hatten dieselbe Maschinen-SID, was anscheinend zu Problemen führte. Folgendes habe ich getan:
Sie verlieren dabei einige Einstellungen (Benutzereinstellungen, statische IP-Adresse, erstellen Sie das selbstsignierte Zertifikat neu), aber jetzt, da ich sie neu erstellt habe, funktioniert alles korrekt.
Ich habe den obigen IIS - Konfigurations-Tricks und Loopback-Registrierungs-Hack ausprobiert, die Berechtigungen für den Anwendungspool und ein Dutzend anderer Dinge überprüft und erneut erstellt und konnte die auf meiner Entwicklungsarbeitsstation ausgeführte Authentifizierungsschleife mit IIS Express oder IIS 7.5 aus einer lokalen oder Remote-Browsersitzung. Ich erhielt vier 401.2 Statusantworten und eine leere Seite. Dieselbe Site, die auf meinem Staging-Server IIS 8.5 bereitgestellt wird, funktioniert einwandfrei.
Schließlich bemerkte ich, dass der Antworttext im Antworttext leer war und der Browser die Standardseite für eine erfolgreiche Anmeldung enthielt. Ich stellte fest, dass die benutzerdefinierte Fehlerbehandlung für ASP.NET und HTTP für den 401-Fehler die Windows-Authentifizierung meiner Arbeitsstation verhinderte/beeinträchtigte aber nicht der Staging-Server. Ich habe einige Stunden damit herumgepfuscht, aber sobald ich die benutzerdefinierte Behandlung nur für den 401-Fehler entfernt hatte, war die Workstation wieder normal. Ich präsentiere dies als eine weitere Möglichkeit, mit dem eigenen Fuß zu schießen.
Haben Sie versucht, sich mit Ihrem Domain-Präfix anzumelden, z. Domain\Benutzername? IIS 6 verwendet standardmäßig den Host-Computer als Standarddomäne. Durch die Angabe der Domäne bei der Anmeldung kann das Problem möglicherweise behoben werden.
In meinem Fall war die Lösung (zusätzlich zu den oben vorgeschlagenen Anpassungen) der Neustart mein/Benutzer lokaler Entwicklungscomputer/IIS (Hosting-Server) . Mein Benutzer wurde gerade zum neuen hinzugefügt AD-Sicherheitsgruppe erstellt - und die Richtlinie wurde erst nach Abmeldung/Neustart des Computers auf das Benutzer-AD-Konto angewendet.
Hoffe das hilft jemandem.
Die Windows-Authentifizierung in IIS 7.0 oder IIS 7.5 funktioniert nicht mit Kerberos (provider = Negotiate) Wenn die Anwendungspoolidentität ApplicationPoolIdentityOne ist, muss der Netzwerkdienst oder ein anderes integriertes Konto . Verwendet werden Möglichkeit ist, NTLM zu verwenden, um Windows Authenticatio zum Laufen zu bringen (in Windows-Authentifizierung, Anbieter, NTLM an die Spitze setzen oder verhandeln)
chris van de vijver
Ich habe das gleiche Problem mit der Aufforderung zur Eingabe von Anmeldeinformationen gefunden und eine schnelle Suche durchgeführt, und nichts im Internet würde das Problem beheben. Es dauerte einige Zeit, das Problem zu finden, ein dummes.
In IIS -> Voreinstellung -> Berechtigungsnachweis für physischen Pfad (ist leer)
Sobald ich eine Rechner-ID (Domäne/Benutzer) hinzugefügt habe, die Zugriff auf die VM/den Server hat, wird die Kennwortabfrage gestoppt.
Hoffe das hilft
Ich hatte dieses Problem auf .net Core 2 und nachdem ich die meisten Vorschläge durchgegangen bin, scheint es, als hätten wir eine Einstellung in web.config verpasst
<aspNetCore processPath="dotnet" arguments=".\app.dll" forwardWindowsAuthToken="false" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" />
Die korrekte Einstellung war forwardWindowsAuthToken = "true", was jetzt offensichtlich ist, aber wenn es so viele Situationen für dasselbe Problem gibt, ist es schwieriger, es genau zu bestimmen
Edit: Ich fand auch den folgenden Msdn Artikel hilfreich, der die Problembehandlung durchläuft.
Ich hatte das gleiche Problem, da der Benutzer (Identität), den ich im Anwendungspool verwendete, nicht zur Gruppe IIS_IUSRS gehörte. Der Benutzer wurde der Gruppe hinzugefügt und alles funktioniert